在形式f(x,y,z)
其中x
是一个给定整数之和的序列,y
是序列的最小长度,并且z
是序列的最大长度。但现在让我们假装我们正在处理一个固定长度的序列,因为否则就需要很长时间才能写出问题。返回一个可变长度,其总和等于给定整数
所以我们的功能是f(x,r)
其中x
是给定的整数和r
是序列在可能序列列表中的长度。
为x = 10
,并r = 2
,这些都是可能的组合:
1 + 9
2 + 8
3 + 7
4 + 6
5 + 5
让我们的商店,在Python作为对的列表:
[(1,9), (2,8), (3,7), (4,6), (5,5)]
所以使用的样子:
>>> f(10,2)
[(1,9), (2,8), (3,7), (4,6), (5,5)]
回到最初的问题,一个序列返回的范围是(y,x)
。我的形式f(x,y,z)
,前面所定义的,并留出长度1
(其中y-z == 0
)的序列,这将如下所示:
>>> f(10,1,3)
[{1: [(1,9), (2,8), (3,7), (4,6), (5,5)],
2: [(1,1,8), (1,2,7), (1,3,6) ... (2,4,4) ...],
3: [(1,1,1,7) ...]}]
所以输出是字典的一个列表,其中的值是对的列表。不完全最佳。
所以我的问题是:
- 是否有已经处理了这个库?
- 如果没有,有人可以帮我写两个我提到的功能吗? (首先是固定序列长度)?
- 由于我对相当微不足道的数学知识存在巨大差距,您是否可以忽略我的整数存储方法并使用最有意义的任何结构?
对不起,今天所有这些算术问题。谢谢!
输出是元组列表 – highBandWidth 2011-03-31 20:41:23
您是否真的需要生成完整的序列列表?这似乎有点笨拙(更不用说慢)......也许更好的方法来看看这个是编写一个函数g(sum,nterms,index),它返回列表的索引序列所有序列的总和为'sum'的长度为'nterms'。我认为这会更容易 - 我强烈怀疑它最终会递归。 – 2011-03-31 20:47:05
这是下一步。 – 2011-03-31 21:16:18