2017-10-05 19 views
-1

在Python中,我想讓我的程序提示我輸入數字,然後我會這樣做。例如,我將輸入'5',作爲回報,我希望它找到1到5之間的所有數字組合,包括1和5,它們總計爲5,而不重複任何序列或數字。所以這個輸出應該是對1,4和2,3。最重要的是,我還希望它能告訴我我有多少輸出,所以在這種情況下2.我想確保如果輸入一個更高的數字,比如說10,它將產生每個組合,即使它是大於一對,所以它會產生1,2,3,4作爲其中一個輸出和1,9作爲另一個,等等。如何創建一個產生單個整數的和的組合的程序?

+5

你有沒有做過什麼_? StackOverflow不是一個代碼寫入服務。你應該向我們展示你的嘗試,這樣我們可以幫助你我們不只是爲您編碼解決方案。 –

回答

0

你有沒有去,因爲我喜歡玩itertools,但是,下次嘗試一下自己:

import itertools 

val = int(input()) 
r = range(val)[1:] 
res = []  
for i in range(len(r)+1): 
    res += [list(x) for x in itertools.combinations(r, i) if sum(list(x)) == val]  
print("Solution : %s " % res) 
print("Combinations : %s" % len(res)) 

# For input 10 : 
# Solution : [[1, 9], [2, 8], [3, 7], [4, 6], [1, 2, 7], [1, 3, 6], [1, 4, 5], [2, 3, 5], [1, 2, 3, 4]] 
# Combinations : 9 

這種方法是一種暴力,你可能會更快地使用數學。

+0

謝謝!我仍然對網站不熟悉,所以我習慣了網站的禮節。 –

相關問題