标签:acm 输出 现在 std 来源 == 需要 geo sizeof
把一个正整数m分成n个正整数的和,有多少种分法?
例:把5分成3个正正数的和,有两种分法:
1 1 3
1 2 2
2 5 2 5 3
2 2
#include <bits/stdc++.h>
using namespace std;
int dp[15][15]; //dp[i][j]: i表示总数,j表示第几个盘子
int find(int n, int m){
if(n < 0 || m < 0)
return 0;
if(m == 0 && n > 0)
return 0;
if(m == 0 && n >= 0){
return dp[n][m] = 1;
}
if(dp[n][m]){ //如果已经填充过,不需要再次进行
return dp[n][m];
}
return dp[n][m] = find(n - m, m) + find(n, m - 1);
}
int main(){
int t;
cin >> t;
while(t--){
int n, m;
memset(dp, 0, sizeof(dp));
cin >> n >> m;
cout << find(n - m, m) << endl;
}
return 0;
}
标签:acm 输出 现在 std 来源 == 需要 geo sizeof
原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/9154746.html