[问题] 非负整数解集合问题

楼主: hexjacal (黑麻糬)   2014-09-16 23:25:42
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Dev C++
问题(Question):
解出 X_1 + X_2 + ... + X_n = 5 的非负整数解 (n>=5)
存成 (n+4)/(n!*4!) * n 的矩阵
预期的正确结果(Expected Output):
Ex. n=7
那解集合有
5 0 0 0 0 0 0
4 1 0 0 0 0 0
4 0 1 0 0 0 0
...
0 0 0 0 0 1 4
0 0 0 0 0 0 5
补充说明(Supplement):
爬文找到版友滴文章,似乎都是以背包问题印出结果
且不考虑同一解的排列,但在我的问题中变量是不同的
i.e. X_1=5, X_2~X_7=0; ... ;X_1~X_6=0,X_7=5 是视为不同解
目前想用递回背包问题的程式
在原解尾端补零后,用 Algorithm 里头的 Permutation 尝试解决
但总觉得一定有更快的方法,不晓得版大们能不能给一些建议呢?
作者: Feis (永远睡不着 @@)   2014-09-16 23:30:00
直接递回解. 看不出有什么药特殊处理的
作者: fenzhang (分帐)   2014-09-17 11:00:00
你的快的定义是时间复杂度还是写code的速度?

Links booklink

Contact Us: admin [ a t ] ucptt.com