package com.study;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

/**

*

* @author acer

* @date 2014-09-15

*

* m个苹果放在n个筐里,每个筐至少一个,所有的筐都一样,有多少种放法

*

* 思路解析:

* step1:每个筐里先放一个苹果,剩余m-n个苹果

* step2:m-n个苹果最多放在m-n个筐里,由于所有的筐都认为是一样的,将筐编号为1-n,

* 后面的筐里放的苹果必须大于等于前面筐里的苹果数。设剩余苹果数为left,剩余要

* 放的筐为n,前一个筐里的苹果数为first。则每次放完当前一个后,向后继续放

* 递归函数:D(int first,int n,int left);

示例:8个苹果放入3个筐里

step1:每个筐先放一个,剩余5个

step2:5个苹果放到3个筐里,可能的方法为:(005)(014)(023)(113)(122)

*/

public class DistributeApple {

public static int count=0;

public static void main(String[] args) {

// TODO Auto-generated method stub

while(true){

count=0;

System.out.print("请输入苹果数:");

InputStreamReader isr=new InputStreamReader(System.in);

BufferedReader bf=new BufferedReader(isr);

String numString=null;

try {

numString = bf.readLine().toString();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

int num1=Integer.parseInt(numString);

System.out.print("请输入筐数:");

try {

numString=null;

numString = bf.readLine().toString();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

int num2=Integer.parseInt(numString);

DistributeApple da=new DistributeApple();

if(num1>num2){

da.distributeApple(0, num2, num1-num2);

}else if(num1==num2){

count++;

}

System.out.println("一共有"+count+"种放法");

}

}

public DistributeApple(){

}

void distributeApple(int first, int n, int left){

//first:第一个筐的苹果数 n:筐的数量 left:剩余苹果

if(n==0){

return;

}else if(n==1){

count++;

System.out.println( first+" "+ n+" "+ left +" "+count);

}else{

for(int k=first;k<=left/n;k++)

distributeApple(k,n-1,left-k);

}

}

}

java m个苹果n个篮子_m个苹果放在n个筐里,每个筐至少一个,所有的筐都一样,有多少种放法...相关推荐

  1. m个苹果放在n个筐里,每个筐至少一个,所有的筐都一样,有多少种放法

    package com.study; import java.io.BufferedReader; import java.io.IOException; import java.io.InputSt ...

  2. 算法题放苹果:把M个相同的苹果放到N个完全相同的盘子里,有多少种放法?

    文章目录 题目描述 题解 思路1 暴力递归 思路2:缓存思想--动态规划来优化暴力递归 题目描述 链接:点我做题 题解 思路1 暴力递归   我们利用递归来解决这个问题,不妨这样思考,假设apples ...

  3. m苹果放n篮子_算法交流:666苹果放篮子【2.6基本算法之动态规划】-09

    一:题目分析:题意大致为有M个苹果,放到N个篮子中,篮子可以为空,问有多少种方法. 二:算法说明 假设 int fun(int m,int n)为求有多少种方法的递归函数,我们易得 其中fun(m-n ...

  4. Java实现 蓝桥杯VIP 算法训练 猴子分苹果

    问题描述 秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分.这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果.第一只猴子悄悄来到山洞,把苹果平均分成n份,把剩下的m个苹果吃了,然后藏起来一 ...

  5. java递归分苹果_递归较难题——分苹果问题

    第四届程序设计大赛 苹果 Time Limit:1000MS  Memory Limit:65536K Total Submit:90 Accepted:48 Description 把M个同样的苹果 ...

  6. 苹果风格ui设计_重新设计苹果音乐应用程序ui ux案例研究

    苹果风格ui设计 重点 (Top highlight) TLDR? UI重新设计 (TLDR? UI Redesign) I didn't realise how much I'd written f ...

  7. 黑苹果找不到触控板_苹果App内测找不到苹果企业签名怎么办?

    在苹果App的内测阶段,很多开发者都会选择使用苹果企业签名来进行App内测,因为经过苹果企业签名添加信任的App可以不经过App Store和苹果系统的审核,直接安装到ios设备上去,所以苹果企业签名 ...

  8. Java的if判断对象为null时,null放在比较运算符的左边还是右边较好?

    如java中:if(name == null)和if(null == name)有什么讲究吗? 答:在java里面,它们是一样的.但是通常写为null == name.这其实是在C语言里面引申出来的. ...

  9. 苹果手机声音突然变小是怎么回事_苹果7通话声音小,苹果7听筒声音小怎么回事...

    苹果7通话声音小,苹果7听筒声音小怎么回事?比较简单的办法是打开设置-辅助功能-电话噪声消除.具体开启电话杂音消除步骤如下: 苹果7通话声音小,苹果7听筒声音小怎么回事 1.在"设置&quo ...

  10. Java黑皮书课后题第9章:*9.10(代数:二次方程式)为二次方程式设计一个名为QuadraticEquation的类

    Java黑皮书课后题第9章:*9.10(代数:二次方程式)为二次方程式设计一个名为QuadraticEquation的类 题目 破题 代码 Test10 Test10_QuadraticEquatio ...

最新文章

  1. java序列化的作用-这个挺有用的,不妨学学
  2. iOS下KVO使用过程中的陷阱
  3. docker导入镜像 liunx_docker扫盲?面试连这都不会就等着挂吧
  4. 看动画轻松理解时间复杂度(一)
  5. 信息奥赛一本通(1180:分数线划定)——插入排序
  6. “猜你喜欢”是怎么猜中你心思的?
  7. document.body.scrollTop值为0的解决方法[转]
  8. 在苹果Mac中如何一键转换繁体与简体中文?
  9. 理解Iass Pass SasS三种云服务区别
  10. rust go对比选择
  11. 康佳电视维修记 LED55M5580AF
  12. 动态规划:挖金矿问题
  13. 洛谷 U84985 Seaway找路
  14. Oracle第十五章:视图
  15. 首字母大写--C++实现
  16. 一文带你搞懂C#多线程的5种写法
  17. ios中嵌套h5做的app,长按图片默认会有放大效果;如何禁止
  18. 浏览器大战中的搜狗浏览器
  19. 关于pycharm中无法安装第三方包的解决办法
  20. 实例:【基于逻辑回归的鸢尾花二分类和三分类问题】

热门文章

  1. python的拼音_Python之拼音拆分
  2. css 背景渐变详解
  3. css中鼠标悬停背景色从左到右
  4. 阿里云服务器可以用来干什么?
  5. 十进制转化为十二进制
  6. word双引号间距大_word
  7. 刻录光驱只能读不能写怎么办?来看看!
  8. 历史 微信开发者工具_微信开发者工具历史记录
  9. linux xps文件,XPS 文件扩展名: 它是什么以及如何打开它?
  10. 减轻使用者的从众心理压力 知名社群网站将隐藏赞数