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);
} } }

m个苹果放在n个筐里,每个筐至少一个,所有的筐都一样,有多少种放法的更多相关文章

  1. m个苹果放在n个盘子里面有多少种放法?(动态规划)

    m个苹果放在n个盘子里面有多少种放法?(动态规划) 实现代码如下: #include <iostream> using namespace std; int s(int m ,int n) ...

  2. 放苹果问题 DP计数 m个苹果放在n个盘子里,苹果,盘子相同,盘子可为空

    详细的解释放苹果问题的链接:苹果可相同可不同,盘子可相同可不同,盘子可空和不可空,都有详细的说明··· http://www.cnblogs.com/celia01/archive/2012/02/1 ...

  3. m个苹果放在n个盘子中有多少种结果

    题目 m个苹果放在n个盘子中有多少种结果,前置条件: 允许存在空盘 重复的摆放结果忽略不计 根据题意,也就是有3种情况,的确完全重复的摆放方式是没多大意义的 思路 这题可以用枚举的描述方式进行尾递归求 ...

  4. 二维码合成,将苹果和安卓(ios和android)合成一个二维码,让用户扫描一个二维码就可以分别下载苹果和安卓的应用

    因为公司推广的原因,没有合适的将苹果和安卓(ios和android)合成一个二维码的工具. 因为这个不难,主要是根据浏览器的UA进行判断,所以就自己开发了一个网站 网站名称叫:好推二维码  https ...

  5. Qt里获取目录的一个另类方法

    如果有一个文件的全路径文件名, 想获取它的路径的话, qt里我没找到比较好的办法, 都是cleanPath后, 再用QString的find, left这种函数来处理. 今天又在搞这种问题的时候, 看 ...

  6. form表单里如果只存在一个文本框,enter键提交

    在这里说一说浏览器里form表单的默认行为 我们都知道浏览器是存在很多默认行为的,可能是出于常用行为考虑又或者是历史原因.但有时候我们不需要这些默认行为.以下: 1).当form表单里只存在一个inp ...

  7. 如何在一个div标签里显示出另一个网页? <iframe src=" http://www.baidu.com " width="800px" height="200px" scrolling="no" frameborder="0"> </iframe>

    如何在一个div标签里显示出另一个网页? 用在div里用iframe,就像下面的代码 <iframe src=" http://www.baidu.com " width=& ...

  8. 关于Android Studio里的Gradle,你所需要知道的都在这里了

    Gradle介绍 Gradle是一个先进的build toolkit,可以方便的管理依赖包和定义自己的build逻辑.到底有多先进,Android Studio官方集成Gradle,Google还专门 ...

  9. Javascript里,想把一个整数转换成字符串,字符串长度为2

    Javascript里,想把一个整数转换成字符串,字符串长度为2.  想把一个整数转换成字符串,字符串长度为2,怎么弄?比如 1 => "01"11 => " ...

随机推荐

  1. java中最简单的方式新起一个线程

    启动一个线程在一个方法中启动一个线程,有两种方法第一种是让类实现Runable接口,这样的话编译器就会提示你实现里面的未实现的方法(就是run方法)第二种是,现在方法中new一个线程,然后直接调用他的 ...

  2. felx基础知识

    felx4将功能组件划分为3个命名空间分别是 fx:核心功能 mx:标准flex3组件组 s:新flex4 spark组件组

  3. 隐藏/显示&nbsp;我的电脑盘符驱动…

    组策略里更改即可:点击"开始"→"运行",输入"gpedit.msc",打开组策略.在窗口左侧的"本地计算机策略"中依次 ...

  4. Zepto源码解读

    /*******************************************************************************Zepto核心和dom操作******* ...

  5. Sublime Text 使用简介

    Sublime Text使用介绍 如果说Notepad++是一款不错Code神器,那么Sublime Text应当称得上是神器滴哥.Sublime Text最大的优点就是跨平台,Mac和Windows ...

  6. jquery知识 属性 css

    jquery基础知识 属性 css <!doctype html> <html lang="en"> <head> <meta chars ...

  7. MySQL(5.6) 函数

    字符串函数 ASCII(str) 说明:返回字符串 str 最左边字符的 ASCII 值 mysql'); mysql); mysql> SELECT ASCII('a'); mysql> ...

  8. 保留关键字 (Transact-SQL)

    https://msdn.microsoft.com/zh-cn/library/ms189822(v=sql.120).aspx Microsoft SQL Server 将保留关键字用于定义.操作 ...

  9. swift-闭包和类的声明

    //闭包:类似Oc中的block 反向传值引起代码的回调 func hasClosureMathes(arr : [Int],value:Int,cb:(num:Int,value : Int)-&g ...

  10. excel导入 导出 兼容各个版本服务器不装EXCEL也可以

    给出 demo源码: http://pan.baidu.com/s/1hqGMudY 提取码:pw4n首先要引用 NPOI.dll (可在网上下载!) //导入 public void OnSubmi ...