放苹果
Time Limit: 1000ms
Memory Limit: 10000KB
This problem will be judged on PKU. Original ID: 166464-bit integer IO format: %lld Java class name: Main
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。
Input
第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。
Output
对输入的每组数据M和N,用一行输出相应的K。
Sample Input
1 7 3
Sample Output
8
Source
Author
lwx@POJ
解题:这道题目不是求排列,更像是那个整数分解
1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 int dp(int m,int n){ 5 if(m == 0 || n == 1) return 1; 6 if(m < n) return dp(m,m); 7 return dp(m-n,n) + dp(m,n-1); 8 } 9 int main(){ 10 int t,m,n; 11 scanf("%d",&t); 12 while(t--){ 13 scanf("%d %d",&m,&n); 14 printf("%d ",dp(m,n)); 15 } 16 return 0; 17 }