新年的第一篇博文
給自己加油 !!告別寒假的安逸 為夢想邁出一小步、、、、
http://acm.hdu.edu.cn/showproblem.php?pid=1134
題意:2N個人依序站成一圈,兩兩組成一隊,不能交叉,組合的組數
http://acm.hdu.edu.cn/showproblem.php?pid=1130
題意:給定N個節點,能構成多少種不同的二叉樹。
代碼一樣,如下:
#include<iostream>using namespace std;int num[101][101]={0};//強烈懷疑:101錯誤的寫成100.////////////////////////答案就是錯誤的。Why?void Catalan(){ int i,j; num[0][0]=1; num[1][0]=1; int len=1; int flag; for(i=2;i<101;i++) { //乘4n-2 int k=4*i-2; flag=0; for(j=0;j<=len;j++) { int z=flag+num[i-1][j]*k; num[i][j]=z%10; flag=z/10; } while(flag) { num[i][j++]=flag%10; flag/=10; } len=j;flag=0; //除n+1 while(j>=0) { int w=num[i][j]+flag*10; num[i][j]=w/(i+1); flag=w%(i+1); j--; } }}int main(){ Catalan(); int n,i; while(cin>>n&&n>0) { i=99; while(num[n][i]==0) {i--;} while(i>=0) { cout<<num[n][i]; i--; } cout<<endl; } return 0;}
此處Catalan數的詳細資料,講解非常詳細。留個連結,隨時解疑答惑