[問題] 關於組合的演算法...(考慮溢位)
看板C_and_CPP (C/C++)作者skywillnosky (Alfred)時間14年前 (2012/04/28 21:07)推噓5(5推 0噓 11→)留言16則, 8人參與討論串2/2 (看更多)
原來可以用帕斯卡...= =(數學不好)
以下是用C(m,n) = C(m-1,n) + C(m-1,n-1)
實作遞迴程式
------------------------------------------------
#include<iostream>
using namespace std;
int Pascal(int, int);
int main(void){
int m, n, sum = 1;
cout << "Enter C(m,n) \nm = ";
cin >> m;
cout << "n = ";
cin >> n;
cout << Pascal(m,n);
system("pause");
return 0;
}
int Pascal(int a, int b)
{
int c = b;
if(b == 1 || (a - b) == 1)
return a;
else if((a - b) == 2)
return ( (a * (a - 1)) / 2);// ***
else if((a - b) == 3)
return ( (a * (a - 1) * (a - 2)) / 6);// ***
else if(a == b)
return 1;
return Pascal(a - 1,b - 1) + Pascal(a - 1,c);
}
-------------------------------------------------
註解有"***"的條件只是避免產生太多小function
基本認為C(x,2) c(x,3)直接成還算可接受的範圍
目前遇到的問題是 執行還是太慢= =
可能是遞迴一直call function的關係
還有別的辦法嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.230.113.18
推
04/28 21:27, , 1F
04/28 21:27, 1F
※ 編輯: skywillnosky 來自: 125.230.113.18 (04/28 21:43)
→
04/28 21:44, , 2F
04/28 21:44, 2F
→
04/28 21:48, , 3F
04/28 21:48, 3F
→
04/28 22:14, , 4F
04/28 22:14, 4F
→
04/28 22:16, , 5F
04/28 22:16, 5F
推
04/28 22:39, , 6F
04/28 22:39, 6F
推
04/29 03:40, , 7F
04/29 03:40, 7F
推
04/29 03:47, , 8F
04/29 03:47, 8F
→
04/29 03:48, , 9F
04/29 03:48, 9F
推
04/29 03:56, , 10F
04/29 03:56, 10F
→
04/29 03:59, , 11F
04/29 03:59, 11F
→
04/29 06:53, , 12F
04/29 06:53, 12F
→
04/30 04:04, , 13F
04/30 04:04, 13F
→
04/30 04:06, , 14F
04/30 04:06, 14F
→
04/30 04:07, , 15F
04/30 04:07, 15F
→
04/30 04:08, , 16F
04/30 04:08, 16F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章