题解 | #放苹果#放弃规划,暴力递归

放苹果

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

//那什么动态规划思想我是一点没有,我真服了,什么东西,这应该算是暴力递归出来的
//但是3个参数真的有点蠢蠢的啊。。。

//总体思路就是先看第一个盘子,把剩下的苹果传给剩下盘子,然后递归,通过after控制下个盘子的数量不超过上个盘子,
//来达到去重效果,最后如果没盘子了同时没剩下苹果来返回1停止递归。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        int n = sc.nextInt();
        System.out.println(getCount1(m, n, m));
    }

    //m为苹果数量,n为盘子数量,after为上一盘子所放置的苹果数(目的为当前盘子不能比上个多,初始设置为m即可)
    public static int getCount1(int m, int n, int after) {
        //放置种数
        int count = 0;

        //当盘子没有了递归结束
        if (n == 0) {
            //如果盘子没有了但是还是剩苹果,则这种放法不算
            if (m != 0) {
                return 0;
            }
            return 1;
        }

        //i为传给剩下盘子的苹果数量
        for (int i = 0; i <= m; i++) {
            //如果当前盘子剩下的苹果比上个盘子多,则跳过
            if (m - i > after) {
                continue;
            }
            count += getCount1(i, n - 1, m - i);
        }
        
        return count;
    }
}

全部评论

相关推荐

喜欢走神的孤勇者练习时长两年半:爱华,信华,等华,黑华
点赞 评论 收藏
分享
感性的干饭人在线蹲牛友:🐮 应该是在嘉定这边叭,禾赛大楼挺好看的
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务