2017-10-05 39 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

谢谢!我仍然对网站不熟悉,所以我习惯了网站的礼节。 –

相关问题