java m个苹果n个篮子_m个苹果放在n个筐里,每个筐至少一个,所有的筐都一样,有多少种放法...
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个筐里,每个筐至少一个,所有的筐都一样,有多少种放法...相关推荐
- m个苹果放在n个筐里,每个筐至少一个,所有的筐都一样,有多少种放法
package com.study; import java.io.BufferedReader; import java.io.IOException; import java.io.InputSt ...
- 算法题放苹果:把M个相同的苹果放到N个完全相同的盘子里,有多少种放法?
文章目录 题目描述 题解 思路1 暴力递归 思路2:缓存思想--动态规划来优化暴力递归 题目描述 链接:点我做题 题解 思路1 暴力递归 我们利用递归来解决这个问题,不妨这样思考,假设apples ...
- m苹果放n篮子_算法交流:666苹果放篮子【2.6基本算法之动态规划】-09
一:题目分析:题意大致为有M个苹果,放到N个篮子中,篮子可以为空,问有多少种方法. 二:算法说明 假设 int fun(int m,int n)为求有多少种方法的递归函数,我们易得 其中fun(m-n ...
- Java实现 蓝桥杯VIP 算法训练 猴子分苹果
问题描述 秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分.这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果.第一只猴子悄悄来到山洞,把苹果平均分成n份,把剩下的m个苹果吃了,然后藏起来一 ...
- java递归分苹果_递归较难题——分苹果问题
第四届程序设计大赛 苹果 Time Limit:1000MS Memory Limit:65536K Total Submit:90 Accepted:48 Description 把M个同样的苹果 ...
- 苹果风格ui设计_重新设计苹果音乐应用程序ui ux案例研究
苹果风格ui设计 重点 (Top highlight) TLDR? UI重新设计 (TLDR? UI Redesign) I didn't realise how much I'd written f ...
- 黑苹果找不到触控板_苹果App内测找不到苹果企业签名怎么办?
在苹果App的内测阶段,很多开发者都会选择使用苹果企业签名来进行App内测,因为经过苹果企业签名添加信任的App可以不经过App Store和苹果系统的审核,直接安装到ios设备上去,所以苹果企业签名 ...
- Java的if判断对象为null时,null放在比较运算符的左边还是右边较好?
如java中:if(name == null)和if(null == name)有什么讲究吗? 答:在java里面,它们是一样的.但是通常写为null == name.这其实是在C语言里面引申出来的. ...
- 苹果手机声音突然变小是怎么回事_苹果7通话声音小,苹果7听筒声音小怎么回事...
苹果7通话声音小,苹果7听筒声音小怎么回事?比较简单的办法是打开设置-辅助功能-电话噪声消除.具体开启电话杂音消除步骤如下: 苹果7通话声音小,苹果7听筒声音小怎么回事 1.在"设置&quo ...
- Java黑皮书课后题第9章:*9.10(代数:二次方程式)为二次方程式设计一个名为QuadraticEquation的类
Java黑皮书课后题第9章:*9.10(代数:二次方程式)为二次方程式设计一个名为QuadraticEquation的类 题目 破题 代码 Test10 Test10_QuadraticEquatio ...
最新文章
- java序列化的作用-这个挺有用的,不妨学学
- iOS下KVO使用过程中的陷阱
- docker导入镜像 liunx_docker扫盲?面试连这都不会就等着挂吧
- 看动画轻松理解时间复杂度(一)
- 信息奥赛一本通(1180:分数线划定)——插入排序
- “猜你喜欢”是怎么猜中你心思的?
- document.body.scrollTop值为0的解决方法[转]
- 在苹果Mac中如何一键转换繁体与简体中文?
- 理解Iass Pass SasS三种云服务区别
- rust go对比选择
- 康佳电视维修记 LED55M5580AF
- 动态规划:挖金矿问题
- 洛谷 U84985 Seaway找路
- Oracle第十五章:视图
- 首字母大写--C++实现
- 一文带你搞懂C#多线程的5种写法
- ios中嵌套h5做的app,长按图片默认会有放大效果;如何禁止
- 浏览器大战中的搜狗浏览器
- 关于pycharm中无法安装第三方包的解决办法
- 实例:【基于逻辑回归的鸢尾花二分类和三分类问题】