看板 Python 關於我們 聯絡資訊
其實要用世界奇觀來解決重複值的部份是可行的,而且幾乎不用變動您的結構 主要是進入下一層迴圈時就要求 大於等於 上一層迴圈的值 既然後面的值都不會比前面的值小 (遞增數列) 自然不會再有左右對稱而重複的問題。 以下是小修後的原po程式碼,重點只有 ``range(a,x)`` ,即上述; 而加入 break 的判斷,只是避免不必要的走到迴圈深處,因為走進去也求不到值。 x = 4 N = 9 for a in range(1,x): if a*8 > N: break N -= a for b in range(a,x): if b*7 > N: break N -= b for c in range(b,x): if c*6 > N: break N -= c for d in range(c,x): if d*5 > N: break N -= d for e in range(d,x): if e*4 > N: break N -= e for f in range(e,x): if f*3 > N: break N -= f for g in range(f,x): if g*2 > N: break N -= g for h in range(g,x): if h*1 > N: break if h == N: print (a,b,c,d,e,f,g,h) N += g N += f N += e N += d N += c N += b N += a pass -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.27.47
darkgerm:多層回圈建意用 DFS 做...暴力寫多層會讓程式不易讀 11/03 15:01
darkgerm:要維護或擴充也不方便 例如如果有 N 個變數就做不出來了 11/03 15:02
※ 編輯: apua 來自: 123.204.159.73 (11/03 15:45)
sofaly:小弟真的沒學過 所以才東拼西湊 XD 11/03 16:53
apua:回樓上,認真不開玩笑,推薦darkgerm的作法 11/03 17:36
apua:只要跟「生成一堆有規律的資料」有關的工具,找 itertools 11/03 17:37
sofaly:是的 了解 ^^" 11/03 17:37
apua:import itertools; help(itertools) 看一下,幫助很大 11/03 17:37
sofaly:謝謝^^ 11/03 18:09
cobrasgo:原po你太閒了吧,幫忙裝潢世界奇觀幹嘛啊XDDD 11/04 11:31
Conjuror:世界奇觀 XDD 11/05 11:22
keitheis:路過來世界奇觀觀光 11/05 18:07