递归——苹果数

来源:互联网 发布:淘宝屏蔽粉丝数 编辑:程序博客网 时间:2024/06/05 13:26
//// Created by 朱正天 on 2017/8/10.//http://blog.csdn.net/qiqi_skystar/article/details/50768467#include <iostream>#include <cstdio>#include <cmath>#define EPS 1e-6using namespace std;int f(int i,int k){//i为苹果数,k为盘子数    if(i<k)//苹果比盘子多,有多少苹果,最多容纳i个盘子,接下来用和f(i,i)相同处理策略;不管是空几个盘子还是不空盘子的代数和        return f(i,i);    if(i==0)//苹果为0个,方案只有全空盘    {        return 1;    }    if(k==0)//没有盘子,没有放苹果方案        return 0;    return f(i,k-1)+f(i-k,k);//策略:剩下的唯一情况i<=k,说明盘子可以一个一个递减,让苹果逐步缩水到剩下的盘子;每个盘子都有苹果,先全部放一个,i-k,剩下的就是i-k放k盘子的策略,重复原始表达式}int main(){    int n=1;    int i=5,k=3;//    cin>>n;    while (n--){//        cin>>i>>k;//输入放苹果i个,k个空盘子        int ans=f(i,k);        cout<<f(i,k)<<endl;    }    return 0;}