作者conan0914 (蠟筆)
看板C_and_CPP
標題Re: [問題] 扔n次骰子,各種點數和的機率
時間Mon Jan 19 10:04:23 2015
試著寫寫看 語法沒有很在意
void GetPossibilityOfThrowDice (int numberOfDice)
{
// We want to get resultArray from 1 to 6N
int *resultArray = new int[6*numberOfDice+1];
SubFunction (0, numberOfDice, resultArray);
for(int i=0; i<=numberOfDice*6; i++)
{
printf("%d with possibility %f\n", i, (float)resultArray[i]/6*numberOfDice);
}
}
void SubFunction (int subSum, int remainingDice, int* resultArray)
{
// End Condition
if (remainingDice == 1)
{
for (int i=1; i<=6; ++i)
{
resultArray[subSum+i] += 1;
}
}
for (int i=1; i<=6; ++i)
{
SubFunction (subSum+i, remainingDice-1, resultArray);
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 71.197.148.13
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1421633065.A.CF0.html
→ conan0914: 命名好討厭>"< 01/19 10:04
→ uranusjr: C# 風 01/19 10:49
→ MOONRAKER: WAY TOO LONG 01/19 11:02
推 o07608: 喔喔我參考看看0.0 01/19 12:55
→ o07608: 這樣好像會造成跑不完的遞迴 01/19 16:22
→ o07608: 丟20次骰子,程式就跑不動了,可是這是功課要求的(噴笑) 01/19 17:27
→ TobyH4cker: 遞迴只要層數一多一定會很慢 01/19 18:30
→ o07608: 是阿,吃完飯回來寫個20層for迴圈跑跑看 01/19 18:41
推 holydc: 20 層要求多少時間啊?? 01/19 20:03
→ o07608: 沒有限定要跑多久,只要結果 01/19 20:06
推 holydc: 不過不管怎樣暴力法應該跑不完吧?? XD 01/19 21:05
→ o07608: 我是還沒真的寫20層迴圈下去...... 01/19 21:05
推 bigpigbigpig: 怎麼可能真的寫20層迴圈,用遞迴寫 DP 一下就算完了 01/19 21:17