日期:2014-05-18  浏览次数:20795 次

算法征集!!各位大牛踊跃参加啊!!
问题:

C# code


int[] i = new int[]  { 1, 2, 3, 4, 5,....100 };

数组中10个数字任意组合,组合不能重复。

组合相加的和等于150。

组合后由小到大排序。

组合内数字不能重复。


求解一共有多少组合方式。






大牛踊跃发表高见,不要保留啊。

------解决方案--------------------
最简单的一种:十重循环。会写代码的都会。
------解决方案--------------------
难以想象,有什么好算法
------解决方案--------------------
除了10个循环外 还有什么好方法吗?
 
i0 取值(1->10)
i1 取值(2->?)
....
i9 取值(20->100)

i0<i1<...<i8<i9

------解决方案--------------------
一般这种问题都是 回溯+剪枝
------解决方案--------------------
是否允许0和负数?
------解决方案--------------------
自己搞个公式推导吧 或许数学上有现成的算法
现在的思路
1<=a1<a2<a3……<a9<a10<=100
a1+a2+a3+……+a10=150


设a2=a1+b1 n1>=0
然后替换 依次这么搞 得到 10a1+9b1+……+j=150
后面不会了…… 在抽象抽象
------解决方案--------------------
自己搞个公式推导吧 或许数学上有现成的算法
现在的思路
1<=a1<a2<a3……<a9<a10<=100
a1+a2+a3+……+a10=150


设a2=a1+b1 n1>=0
然后替换 依次这么搞 得到 10a1+9b1+……+j=150
后面不会了…… 在抽象抽象
------解决方案--------------------
from students in student where 条件
------解决方案--------------------
求解的个数用动态规划可以,看看这个帖子。
http://topic.csdn.net/u/20091227/22/dc110ef5-becd-4a63-af8c-8531557b627d.html
to:xiaoh
忙的怎样了?
------解决方案--------------------
探讨

是否允许0和负数?