luogu2386_放苹果
时空限制 1000ms/128MB
题目描述
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分发(5,1,1和1,1,5是同一种方法)
输入输出格式
输入格式:
第一行是测试数据的数目t(0 <= t <= 20),以下每行均包括二个整数M和N,以空格分开。1<=M,N<=10
输出格式:
对输入的每组数据M和N,用一行输出相应的K。
输入输出样例
输入样例#1:
1
7 3
输出样例#1:
8
输入样例#2:
3
3 2
4 3
2 7
输出样例#2:
2
4
2
代码
#include<iostream>
using namespace std;
const int N = 25;
int T,m,n,f[N][N];
int main(){
for (int i=0; i<=20; i++)
for (int j=0; j<=20; j++)
if (i==0 || j==1) f[i][j]=1;
else if (i<j) f[i][j]=f[i][i];
else f[i][j]=f[i][j-1]+f[i-j][j];
cin>>T;
while (T--){
cin>>m>>n;
cout<<f[m][n]<<endl;
}
cout<<endl;
}