1.杨辉三角求组合数,最高只能求几千内的组合数。
#include<bits/stdc++.h>
using namespace std;
#define int long long
int C[1005][1005];
signed main()
{
//求 1000 以内的组合数
for(int i=0;i<=1000;i++){
C[i][0]=C[i][i]=1;
for(int j=1;j<i;j++){
C[i][j]=C[i-1][j-1]+C[i-1][j];
}
}
//例:求 C[10][5]
cout << C[10][5];
return 0;
}
2.递归求组合数 (dfs)
根据数学公式: 进行递推
#include<bits/stdc++.h>
using namespace std;
#define int long long
int dfs(int a,int b){
if(b==0 || a==b) return 1;
return dfs(a-1,b)+dfs(a-1,b-1);
}
signed main()
{
//例:求 组合数 C[n][m]
cout << dfs(10,5);
return 0;
}