#include <iostream> #include <cstdio> #include <algorithm> using namespace std; //递归 苹果大于等于盘子 1.有一个盘子空的,剩下的盘子放苹果几种情况?2.每个盘子都不空,再把剩下的苹果放好几种情况? // 苹果比盘子少(不能保证装满每个盘子) 转化成盘子=苹果的时候有几种?又变成第一种情况!! int digui(int apple,int pan){ if(apple==0||pan==1||apple==1){//chukou return 1; } if(apple<pan){ digui(apple,apple); } else{ return digui(apple,pan-1)+digui(apple-pan,pan);//假设每个盘子都先放一个苹果,剩下的苹果再放 } } int main() { int t; cin>>t; for(int i=0;i<t;i++){ int apple,pan; cin>>apple>>pan; cout<<digui(apple,pan)<<endl; } return 0; } |
Double click to view unformatted code.