题解 | #放苹果#java,按堆分层递归,是我思路问题吗,感觉没那么简单

放苹果

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

import java.util.*;
import java.io.*;
public class Main{
    public static void main(String[] args) throws Exception{
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String str = bf.readLine();
        String[] split = str.split(" ");
        int m = Integer.parseInt(split[0]),n = Integer.parseInt(split[1]);
        /*
            m个苹果分为n份
            分为1堆 + 分为2堆 + 分为3堆
        */
        int res = 0;
        for(int i = 1;i <= n;i++){
            res += getCnt(m,i,1);    
        }
        System.out.println(res);
    }
    //共有每个苹果,分为n堆,当前堆的起始大小(单纯为了去重)保证递增的顺序
    public static int getCnt(int m,int n,int cur){
    	//只存储一堆,那直接返回
        if(n == 1) return 1;
        int cnt = 0;
        				//当前堆i,下一堆m - i,当前堆不能比下一堆小
        for(int i = cur;i * 2 <= m;i++){
            cnt += getCnt(m - i,n - 1,i);
        }
        return cnt;
    }
}
全部评论

相关推荐

06-12 17:46
门头沟学院 Java
运营你豪哥:来说重点: ​1.项目前置,时间倒序。​​ 2.​项目描述强化结果与量化效果(STAR原则里的R)。​​ ​3.个人技能精炼,明确掌握程度,突出核心。​​ ​4.增加强有力开头的个人总结部分。​​ 5.​优化教育背景(成绩排名)、合并奖项与活动。​​
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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