描述
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。
输入
输入二个整数M和N,以空格分开。1<=M,N<=10。
输出
输出方案数
样例输入
7 3
样例输出
8
代码
#include<iostream>
using namespace std;
int M,N;
int plate[11];
int ans;
int sum(int i){
int temp=0;
for(int k=1;k<=i;++k){
temp+=plate[k];
}
return temp;
}
void dfs(int i,int num){
if(i==N+1){
if(sum(N)==M){
++ans;
}
return;
}
for(int k=num;k<=M;++k){
if(sum(i-1)+k<=M){
plate[i]=k;
dfs(i+1,k);
}
}
}
int main(){
cin>>M>>N;
dfs(1,0);
cout<<ans;
return 0;
}