将整数n分成k份,且每份不能为空,任意两个方案不相同(不考虑顺序)。
例如:n=7,k=3,下面三种分法被认为是相同的。
1,1,5; 1,5,1; 5,1,1;
问有多少种不同的分法。
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn = 200 + 10;
int dp[maxn][maxn];
void solve()
{
int n,m;
scanf("%d%d",&n,&m);
dp[0][0] = 1;
for(int i = 1;i<=n;i++) dp[i][1] = 1;
for(int i =1;i<=n;i++)
{
for(int j = 1;j<=m;j++)
{
if(i>=j) dp[i][j] = dp[i-j][j] +dp[i-1][j-1];
}
}
printf("%d\n",dp[n][m]);
}
int main()
{
solve();
return 0;
}
N的整数划分
最新推荐文章于 2021-05-20 21:14:14 发布