放苹果
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 33682 Accepted: 20837
Description
1
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 33682 Accepted: 20837
Description
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。
第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。
对输入的每组数据M和N,用一行输出相应的K。
1
7 3
8
lwx@POJ
题意:略 (其实这跟将一个整数m分成n个整数之和是类似的)
解题思路:分为两种情况。第一种情况是每个盘子至少有一个苹果:slove(m - n,n)。第二种情况就是至少有一个盘子没有苹果:slove(m,n-1)。递归求解。
#include<cstdio>
#include<cstdlib>
using namespace std;
int slove(int m,int n){
if(m < 0) return 0;
if(m == 0||n == 1) return 1;
return slove(m - n,n) + slove(m,n - 1);
}
int main(){
int t,m,n;
scanf("%d",&t);
for(int i = 1;i <= t;i++){
scanf("%d %d",&m,&n);
printf("%d\n",slove(m,n));
}
}