题解 | #放苹果#

放苹果

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

import java.util.Scanner;

import java.util.*; 

//Java递归
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

            while (in.hasNextInt()) { 
            int  a = in.nextInt();
            int  b = in.nextInt();
           int sum = out(a,b);
           System.out.println(sum);
        }

    }

    public static int out(int a,int b){
        if( a==0 || a==1 || b==1){
             return 1;      //如果当前的苹果只有一个或是零个,则只有一种情况(因为没有顺序之分),
        }
        if(a<b){
           return  out(a,a);        //多余的盘子没有分配到的可能
        }
        else{
            return out(a,b-1)+out(a-b,b);   //当排除了边界条件之后,剩下的就只有两重情况,
            //即当前盘是否要放苹果,放苹果则所有的盘都有苹果,集体减一不影响排布
            //不放苹果则是直接少一个盘
        }
           
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务