View Code of Problem 787

#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.


Back to problem 787