题解 | #放苹果#

放苹果

http://www.nowcoder.com/practice/bfd8234bb5e84be0b493656e390bdebf

//用递归
//当n>m:必定有n-m个盘子永远空着,去掉它们对摆放苹果方法数目不产生影响。即if(n>m) f(m,n) = f(m,m) 
//当n<=m:放法可以分成两类:
//1、有一个空盘子,记,放法f1 = f(m,n-1);
//2、没有空盘子,所有盘子都有1个苹果,相当于可以从每个盘子中拿掉一个苹果,不影响不同放法的数目,记,放法f2 = f(m-n,n).
//而总的放苹果的放法数目等于两者的和,即 f(m,n) = f1 + f2 = f(m,n-1)+f(m-n,n)
#include<stdio.h>
int f(int m,int n){
    int method;
    if(m==0||n==1)
        method=1;
    else if (n>m)
     method=f(m,m); 
    else if (n<=m)
       method=f(m,n-1)+f(m-n,n);
    return method;
}
int main(){
    int m,n;
    scanf("%d %d",&m,&n);
    int method;
    method=f(m,n);
    printf("%d",method);
}
全部评论

相关推荐

11-27 12:43
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
头像
11-06 10:58
已编辑
门头沟学院 嵌入式工程师
双非25想找富婆不想打工:哦,这该死的伦敦腔,我敢打赌,你简直是个天才,如果我有offer的话,我一定用offer狠狠的打在你的脸上
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务