看板 PHP 關於我們 聯絡資訊
如何有效率的產生不重覆的陣列值 拿5個bit的值來說明好了 我要產生能像以下規則的陣列 (因為打字的關係,所以[x,x,x,x,x]用xxxxx表示) step1:01234 step2:01243 step3:01324 step4:01342 step5:01423 step6:01432 step7:02134 step8:02143 ... ... n-1:43201 n :43210 我想產生像上面這樣的陣列 ------------------------------ 我現在的作法是用for迴圈硬幹 流程就像下面這樣 (5bit的話,會用5進制去進位) (n bit則改用 n進制去進位) 00000 00001 00002 00003 00004 00010 00011 00012 00013 00014 00020 ... ... 44444 然後再用if()判斷取出「不重覆的陣列」 取出像是 01234 02143 .... 我這種做法的效率太差 5bit的話,for迴圈要跑5^5=3125次 7bit的話,for迴圈要跑7^7=82萬次 9bit的話,for迴圈要跑9^9=3億次 偏偏我的筆數非常多 程式約要9分鐘才跑完 有沒有辦法更有效率的直接產生像這樣子的程式 step1:01234 step2:01243 step3:01324 step4:01342 step5:01423 step6:01432 step7:02134 step8:02143 ... ... n-1:43201 n :43210 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.142.122
chhuang:permutation 12/21 22:36