读书人

小弟我写的2b程序

发布时间: 2012-09-27 11:11:17 作者: rapoo

我写的2b程序
问题: 一个六个点的色子 ,随机扔十次,总点数和为50,问可能的情况有多少种?

算法逻辑悲剧的我,写了一个特2b的程序,用了十个for循环嵌套遍历可能的结果,结果虽然出来了,是85233 种,但相同点数不同出现次序的这种情况没有被排除掉。 越看自己的程序,感觉越2b,十个for循环啊,十个!!!!敲的手都疼了。


求懂的指点下,我不要作2b程序猿!!!!!

[解决办法]
这个明显可以深搜啊。
就当作伪代码吧,没有运行,大概意思就是这样。
直接dps(0)就行了

C/C++ code
int sum = 0,cnt = 0;dps(int n){    if(n == 10 && sum == 50)    {        cnt ++;        return;    }    for(int i = 1; i < 6; ++ i)    {        if(sum > 50)            return;        else        {            sum += i;            dps(n + 1);            sum -= i;        }        }}
[解决办法]
x骰子, 和等於n
DP(x, n)=DP(x-1, n-1)+DP(x-1, n-2)+DP(x-1, n-3)+DP(x-1, n-4)+DP(x-1, n-5)+DP(x-1, n-6)
界件就不了.

读书人网 >软件架构设计

热点推荐