一,题意:
  M个苹果放在N个盘子里,允许有盘子空着,问共有多少种不同的分法。
二,思路:
  递归的思想求解:
    1,有反复执行的过程(调用本身)
      第一种情况n>m : 必定有 n-m 个盘子空着,去掉不影响。
      第二种情况n<=m :
        i,有至少一个盘子空着;
        ii,每个盘子都有苹果;
        总的放苹果的方法数为两者之和:
2,有跳出反复执行过程的条件(递归出口)
  当苹果放完或者只有一个盘子的时候
   *递归两条路:
    i,n会逐渐减少,最终到达出口 n==1 ;
    ii,m逐渐减少,因为n>m时,return work(m,m),所以终会到达出口 m==0;
三,步骤:
  1,if(n>m) work(m,n) = work(m,m) ;
   else
    i,work(m,n) = work(m,n-1);
    ii,work(m,n) = work(m-n,n);
   work(m,n) = work(m,n-1) + work(m-n,n);
  2,if(m==0||n==1) return 1;

 #include<iostream>
using namespace std; int work(int m , int n){
if(m==||n==)
return ;
if(n>m)
return work(m,m);
else
return work(m,n-)+work(m-n,n);
} int main(){
int t , m , n ;
cin>>t;
while(t--){
cin>>m>>n;
cout<<work(m,n)<<endl;
}
return ;
}

注意:
  1,递归就是在过程或函数里调用自身
  2,在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
  3,递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。
  4, 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。
要求:
  1,每次调用在规模上都有所缩小(通常是减半);
  2,相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入);
  3,在问题的规模极小时必须用直接给出解答而不再进行递归调用,因而每次递归调用都是有条件的(以规模未达到直接解答的大小为条件),无条件递归调用将会成为死循环而不能正常结束。

版权声明:本文为博主原创文章,未经博主允许不得转载。

poj1664-放苹果(递归)的更多相关文章

  1. poj1664 放苹果(DPorDFS)&&系列突破(整数划分)

    poj1664放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 33661   Accepted: 20824 Desc ...

  2. [POJ1664]放苹果(动态规划)

    [POJ1664]放苹果 Description 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. Input 第 ...

  3. poj1664放苹果(递归)

    题目链接:http://poj.org/problem?id=1664 放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: ...

  4. POJ1664 放苹果 (母函数)

    放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 37515   Accepted: 23090 Description ...

  5. poj 1664 放苹果 递归

    题目链接: http://poj.org/problem?id=1664 题目描述: 有n个苹果,m个盒子,盒子和苹果都没有顺序,盒子可以为空,问:有多少种放置方式? 解题思路: 当前有n个苹果,m个 ...

  6. poj1664 放苹果(递归)

    转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://poj.org/problem?id=1664 ------ ...

  7. [POJ1664] 放苹果 (动态规划,组合数学)

    题目描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分发(5,1,1和1,1,5是同一种方法) 输入输出格式 输入格式: 第一行是测试数据的数目t(0 <= ...

  8. POJ1664 放苹果

    #include <iostream> #include <cstdio> #include <cstring> using namespace std; int ...

  9. 放苹果(poj1664递归)

    ti放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 24392   Accepted: 15513 Descripti ...

  10. 递归--练习4--noi666放苹果

    递归--练习4--noi666放苹果 一.心得 写出状态后勇敢假设 二.题目 666:放苹果 总时间限制:  1000ms 内存限制:  65536kB 描述 把M个同样的苹果放在N个同样的盘子里,允 ...

随机推荐

  1. CMake命令/函数汇总(翻译自官方手册)

    查看官方文档 cmake命令 选项 CMake变量 CMake命令汇总 / add_custom_command add_custom_target/add_definitions/add_depen ...

  2. 解决VirtualBox只能安装32位系统的问题

    发现自己的笔记本(Thinkpad E440)里的 VirtualBox 只能安装 32位 的系统,如下图所示: 经过一番查资料,发现这玩意需要到BIOS里设置一下,方可安装 64位 系统,操作如下: ...

  3. js前端实现模糊查询

    对于模糊查询,一般都是传关键字给后端,由后端来做.但是有时候一些轻量级的列表前端来做可以减少ajax请求,在一定程度上提高用户体验.废话不多说,直接上代码. //字符串方法indexOfvar len ...

  4. h5 hdf5 文件转 tif 流程

    由于需要对h5(hdf5)格式的dem数据进行拼接,但是arcgis不能识别h5的地理参考信息,所以先将h5文件转为带地理参考的tif文件,然后再进行拼接. 工具:arcgis+envi 1.用arc ...

  5. IIS相关知识

    1.在web.config中,iis6使用<system.web>下配置项,iis7使用<system.webServer>下配置项 2.<httpHandlers> ...

  6. linux下ssh的几种验证方式

    ssh的认证方式有很多种,大概可以概括为以下几类: 1.pam认证方式 在配置文件/etc/ssh/sshd_config中对应参数:UsePAM 2.密钥认证方式 配置文件/etc/ssh/sshd ...

  7. sqlserver中判断表或临时表是否存在

    转自:http://www.cnblogs.com/yugen/archive/2010/07/25/1784749.html 1.判断数据表是否存在 方法一: use yourdb;go if ob ...

  8. PHP【函数】

    目录:[PHP函数].[PHP数组] 一.PHP常用函数(和JS一样)函数的四要素:①返回类型②函数名③参数类型④函数体因为PHP是弱类型语言,所以可以不用写返回类型,但是其他三个要素都是必须要写的. ...

  9. Swift - 界面的跳转模式

    iOS开发中界面跳转有两种方式,上下跳转和左右跳转. 上下跳转_TO: let secondViewController = SecondViewController() self.presentVi ...

  10. 安装mcrypt

    Mcrypt扩展是 mcrypt 库的接口,mcrypt 库提供了对多种块算法的支持. 安装mcrypt之前请确认已经安装yum install gcc php-devel 执行命令:yum upda ...