https://www.luogu.org/problem/show?pid=2386
题目背景
(poj1664)
题目描述
把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:
1 7 3
输出样例#2:
8
如果没有苹果或者只剩一个盘子,只有一种方案。
如果苹果比盘子少,多余的盘子就不管了、
否则,可以不放苹果,或者每个盘子放一个
1 #include <cstdio> 2 3 inline void read(int &x) 4 { 5 x=0; register char ch=getchar(); 6 for(; ch>'9'||ch<'0'; ) ch=getchar(); 7 for(; ch>='0'&&ch<='9'; ch=getchar()) x=x*10+ch-'0'; 8 } 9 10 int DFS(int apple,int dish) 11 { 12 if(!apple||dish==1) return 1; 13 else if(apple<dish) return DFS(apple,apple); 14 else return DFS(apple-dish,dish)+DFS(apple,dish-1); 15 } 16 17 int Presist() 18 { 19 int t; read(t); 20 for(int n,m; t--; ) 21 { 22 read(m),read(n); 23 printf("%d ",DFS(m,n)); 24 } 25 return 0; 26 } 27 28 int Aptal=Presist(); 29 int main(){;}