首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

小弟我写的2b程序

2012-09-27 
我写的2b程序问题: 一个六个点的色子 ,随机扔十次,总点数和为50,问可能的情况有多少种?算法逻辑悲剧的我,

我写的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)
邊界條件就不寫了.

热点排行