(递归)666:放苹果
描述
把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
我の思考
这个问题用递归的思维来做,我们需要明确,它应该有两个参数,一个是苹果的数量m,一个是盘子的数量n。
然后我们再根据m与n的比较来划分情况,注意,它的重复条件。
1.当m>n(苹果更多)时,每个盘子肯定至少有一个苹果,所以我们需要考虑的就是如何把m-n个苹果放入n个盘子里面。
2.当m<n(盘子多)时,这时候其实就相当于要把m个苹果放入m个盘子里。
3.当m=n(苹果和盘子一样多时),我们可以分为每一个都放一个苹果,也就是1次,还有当空出盘子放的情况。
我の代码
#include <iostream> using namespace std;int func(int m,int n){if(n==0 || m==0){return 0;}if(n==m){return 1+func(m,n-1);}if(m<n){return func(m,m);}if(m>n){return func(m-n,n)+func(m,n-1);} }int main() {int k=0;cin>>k;while(k){int n,m;cin>>m>>n;cout<<func(m,n)<<endl;k--;}return 0; }
我の小结
这类题目应该首先确定好参数的数量,再想办法找出参数之间的关系组成,从而的到答案。
转载于:https://www.cnblogs.com/rimochiko/p/7499089.html
(递归)666:放苹果相关推荐
- 程序设计与算法----递归之放苹果问题
问题描述 例题:放苹果 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问公有多少种不同的分法?5,1,1和1,5,1是同一种分法 输入 第一行是测试数据数目t(0<=t<=2 ...
- 666:放苹果 —— C++
描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. 输入 输入二个整数M和N,以空格分开.1<=M,N& ...
- 递归--练习4--noi666放苹果
递归--练习4--noi666放苹果 一.心得 写出状态后勇敢假设 二.题目 666:放苹果 总时间限制: 1000ms 内存限制: 65536kB 描述 把M个同样的苹果放在N个同样的盘子里,允 ...
- 2.3 基本算法之递归变递推 放苹果 python
http://noi.openjudge.cn/ch0203/666/ """ 2.3 基本算法之递归变递推 666 放苹果 http://noi.openjudge.c ...
- POJ1664 放苹果【递推+记忆化递归】
放苹果 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 35209 Accepted: 21792 Description ...
- 算法一:递归(包含Hanoi问题、N皇后问题、逆波兰表达式、爬楼梯、放苹果、全排列)
递归 递归在算法中具有很重要的地位,也是很多学习编程的初学者非常头疼的问题,看我的这篇文章,希望能为还处于迷雾中的你带来希望 首先我们要知道递归的作用: 1.可替代多重循环 2.解决本来就是用递归形式 ...
- java递归分苹果_递归应用示例(放苹果)[较难 选听]
ok,下面我们再看一个例子. 这个例子呢比较有意思. 这个例子名字叫放苹果.这是open jar 的上面比较经典的一道题目. 我们来看一下这个题目.说啊,有M个同样的苹果. 这M个苹果呢一模一样没有区 ...
- 机试:放苹果(递归问题)
通过者的解读 设dp(m,n) 为m个苹果,n个盘子的放法数目,则先对n作讨论, 当n>m:必定有n-m个盘子永远空着,去掉它们对摆放苹果方法数目不产生影响.即if(n>m ...
- poj1664:放苹果问题(递归)
poj1664:放苹果:http://poj.org/problem?id=1664 咱们设苹果的个数为m个,盘子的个数为n个. 第一种情况: 如果苹果只有一个或者零个,即m=1或m=0,此时只有一种 ...
- 放苹果(C语言-递归)
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. Input 第一行是测试数据的数目t(0 <= t < ...
最新文章
- docker入门及安装
- HighNewTech:带你解读云计算、雾计算(Fog Computing)、边缘计算(Edge Computing)的前世今生
- C语言实现面向对象示例
- Python的运算符与表达式
- 卡尔曼滤波原理理解(1)
- vscode 新版eslint自动修复_程序员请收好:10 个实用的 VS Code 插件
- 1.3 正则表达式和Python语言-1.3.5使用 search()在一个字符串中查找模式(搜索与匹配 的对比)...
- Android木马病毒com.schemedroid的分析报告
- Pcblayout——立创EDA
- ASIC设计流程简介
- C++数据结构——栈
- 百度AI开放平台 UNIT平台开发在线客服 借助百度的人工智能如何开发一个在线客服系统...
- 熔断机制什么意思_什么是熔断机制 熔断机制是什么意思
- 华为AR系列路由器密码重置
- IoT原型开发利用现成的单板设计---凯利讯半导体
- PostgreSQL 如何实现数据透视表
- 笔记之零基础入门金融风控-贷款违约预测
- 计算机游戏是什么意思,端游是什么意思啊,吃鸡端游是什么意思啊
- VirtualBox安装Ubuntu20.04 + 安装增强功能
- 牛客暑假多校第二场 K carpet
热门文章
- jupyter notbook远程连接配置(Ubuntu16.04)
- Pandas数据框索引函数 iloc、loc和ix学习使用
- python交互式shell之jupyter notebook初步安装使用
- 数据挖掘著名学者的网站
- latex 公式去掉不要编号
- DevOps使用教程 华为云(11)git分支怎么用 分支合并 评审
- linux suse 安装redis,redis 集群安装问题 【SUSE Linux Enterprise Server 11 SP3】
- (二)UML语言概述
- qtvs添加qchart_如何使用Qt Designer在窗体中插入QChartView?
- dcm4chee汉化_docker dcm4chee