题目描述:
问题描述 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。 例如:n=7,k=3,下面三种分法被认为是相同的。 1,1,5; 1,5,1; 5,1,1; 问有多少种不同的分法。
输入:
n,k
输出:
一个整数,即不同的分法
样例输入
7 3
样例输出
4
提示
样例的四种分法为:1,1,5;1,2,4;1,3,3;2,2,3;}
数据规模和约定
6<=n<=200,2<=k<=6
#include <iostream> #include <cstring> using namespace std; int main() { int n,k; int a[7][201]; cin>>n>>k; memset(a,0,sizeof(a)); for(int i=0;i<=n;i++) { a[1][i]=1; } for(int i=1;i<=k;i++) { for(int j=0;j<=n-k;j++) { if(j>=i) a[i][j]=a[i-1][j]+a[i][j-i]; else a[i][j]=a[i-1][j]; } } cout<<a[k][n-k]; return 0; }