总时间限制:

1000ms

内存限制:

65536kB

描述

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

输入

第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。

输出

对输入的每组数据M和N,用一行输出相应的K。

样例输入

1
7 3

样例输出

8

这个题目采用递归解决,我们首先对于问题分析一下,如果盘子的数目大于苹果的数目,那肯定要有一些盘子是什么也不放的。

所以还剩下 n-m 个盘子,其余的盘子都是一样的,所以不做处理。

然后对问题进行分类,要么就有盘子不放苹果,要么就在每个盘子上面全放上苹果。

对于这两种情况:不放苹果的话就 return f(m,n-1),然后这个递归就会从盘子数目从1到n-1递归求解有多少种 方案数。

这个过程实际上是先求当前的  有的不放  +  所有都放  的情况,然后要求这个就要先求之前的  有的不放  +  所有都放  的数目,直到回到递归的边界条件得到一个确定的值,这时候边界的值就知道了,是一个确定的数,那上一层的递归就也可以通过一个确定的数相加得到确定的值,假设上一层是有两个递归的的,,一个  有的不放  ,一个  所有都放  。所以最底层的边界就要有四个值,每个递归两个。其实这样的话,这一层就已经相当于是最顶层了,这就是要求的结果了,因为,每次递归下去都是二层递归, 所以当递归数目为2的时候,就是最顶层了。

至于所有都放,自己体会一下。

说完了问题的分类,就该说递归的终止了,因为题目允许盘子不放入苹果,所以,当苹果数目为零,但是盘子数目不为零的时候,他的方案数就为 1 。

但是当盘子的数目为零的时候,就没有方案数了,就是零。

注意递归的求解就是一定要有边界条件。

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

转载于:https://www.cnblogs.com/xyqxyq/p/10211367.html

openjudge-1664 放苹果相关推荐

  1. poj 1664 放苹果 DPDFS

    点击打开链接 把 M个同样的苹果放在 N个同样的盘子里,允许有的盘子空着不放 问共有多少种方法?5,1,1和1,5,1是同一种方法 解法一: poj 1664 放苹果 DP dp[i][j]表示共 i ...

  2. poj 1664 放苹果【M的N划分】

                                                   放苹果 Description 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不 ...

  3. [ACM] POJ 1664 放苹果(n个相同小球放入m个相同盒子)

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

  4. POJ 1664 放苹果(递归或DP)

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

  5. POJ 1664 /NYOJ 758 放苹果问题(递归)

    分苹果 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 2 描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法? (注意:假如有3个盘子 ...

  6. poj1664(放苹果)

    题目链接:http://poj.org/problem?id=1664 关于放苹果的那些事.......... 今天偶然看到一个关于整数划分的算法, 仔细看了后,我想到了放苹果的事,其实这个问题困扰了 ...

  7. 2.3 基本算法之递归变递推 放苹果 python

    http://noi.openjudge.cn/ch0203/666/ """ 2.3 基本算法之递归变递推 666 放苹果 http://noi.openjudge.c ...

  8. P2386 放苹果 方法一

    http://noi.openjudge.cn/ch0203/666/ /* 2.3基本算法之递归变递推_666放苹果 方法一 http://noi.openjudge.cn/ch0203/666/1 ...

  9. poj1664:放苹果问题(递归)

    poj1664:放苹果:http://poj.org/problem?id=1664 咱们设苹果的个数为m个,盘子的个数为n个. 第一种情况: 如果苹果只有一个或者零个,即m=1或m=0,此时只有一种 ...

  10. 43.放苹果(递归练习)

    放苹果 总时间限制: 1000ms 内存限制: 65536kB 描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分 ...

最新文章

  1. Spark MLlib实现的中文文本分类–Naive Bayes
  2. wpf silverlight开发框架(prism)系列教程
  3. GO语言struct语法
  4. 具备白名单、黑名单的Filter基类扩展
  5. 使用SAP API portal进行SAP SuccessFactors的API测试
  6. MySQL 调用存储过程
  7. pycharm无法导入本地模块问题
  8. asp.net常用正则表达式
  9. VNC+SSH相关应用
  10. Docker之使用Dockerfile创建定制化镜像(四)--技术流ken
  11. thinkpad键盘功能键驱动_韩度X-104机械键盘拆解评测 - 性价之选
  12. 【夯实PHP基础】PHP发送邮件(PHPMailer)
  13. matlab在机电一体化的仿真图,基于simulink的机电一体化系统案例仿真教学研究
  14. php改写单词的大小写strtoupper/strtolower/ucfirst/ucwords
  15. seaborn系列 (10) | 盒形图boxplot()
  16. (一)Word中如何将表格断开,并且增加空的一行
  17. android手游渠道接入业务+技术全讲解
  18. 100部伴随我们长大的电影
  19. 几个好用的扩展程序,谷歌和火狐的
  20. WatchGuard Firebox配置动态口令(OTP)认证

热门文章

  1. FFA 2021 专场解读 - 实时数据湖
  2. 106页的《Python进阶》中文版(附下载)
  3. ios 点击出现另外一套tabbar_iOS 点击UITabBar触发刷新
  4. python 调用js_python调用JS方法
  5. java动画帧储存路径_Java实现帧动画的实例代码
  6. java参数化比特值,在Java中使用泛型的可选参数化
  7. cmake导入so库_(转)HelloWorld CMake CMake中构建静态库与动态库及其使用
  8. 没有找到dllregisterserver输入点_「Mac实用技巧」将浏览器的点密码转换成文本密码的三种方法分享...
  9. docker 实践(十二)k8s 初体验
  10. 【翻译】CodeMix使用教程(四):调试