DFS-递归与回溯之放苹果问题
题目:
把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的这种情况;
有空盘子时比较好理解,就是去掉一个盘子,就是至少有一个空盘子,因为随着递归的进行,盘子会越来越少。
最难理解的是放满时怎么办,放满时,会有dfs(m-n,n)这一步操作,这一步操作,其实是这样的,就好比7个苹果放在3个盘子里,我们可以先在每个盘子里都放一个苹果,然后把剩下的4个再放在3个都有一个苹果的盘子里。
所以可以把之前每个盘子里放的哪一个苹果当做不存在…嘿嘿嘿,这样就好想了很多。
代码如下:
#include<bits/stdc++.h>
using namespace std;
int DFS(int m,int n) {if(m == 0 || n == 1)return 1;else if(n > m)return DFS(m, m);elsereturn DFS(m - n, n) + DFS(m, n - 1);
}
int main() {int t, m, n;scanf("%d", &t);while(t--) {scanf("%d%d", &m, &n);printf("%d\n", DFS(m, n));}return 0;
}
DFS-递归与回溯之放苹果问题相关推荐
- 2.3 基本算法之递归变递推 放苹果 python
http://noi.openjudge.cn/ch0203/666/ """ 2.3 基本算法之递归变递推 666 放苹果 http://noi.openjudge.c ...
- java递归分苹果_递归应用示例(放苹果)[较难 选听]
ok,下面我们再看一个例子. 这个例子呢比较有意思. 这个例子名字叫放苹果.这是open jar 的上面比较经典的一道题目. 我们来看一下这个题目.说啊,有M个同样的苹果. 这M个苹果呢一模一样没有区 ...
- CCF NOI1073 放苹果
问题链接:CCF NOI1073 放苹果. 时间限制: 1000 ms 空间限制: 262144 KB 题目描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的放法( ...
- 递归--练习4--noi666放苹果
递归--练习4--noi666放苹果 一.心得 写出状态后勇敢假设 二.题目 666:放苹果 总时间限制: 1000ms 内存限制: 65536kB 描述 把M个同样的苹果放在N个同样的盘子里,允 ...
- HDU 1010题解这是一道简单的DFS加回溯题,看懂后就会对递归和回溯有较深刻的理解。...
1 #include<iostream> 2 #include<cstdio> 3 4 using namespace std; 5 6 char s[7][7]; //将变量 ...
- 程序设计与算法----递归之放苹果问题
问题描述 例题:放苹果 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问公有多少种不同的分法?5,1,1和1,5,1是同一种分法 输入 第一行是测试数据数目t(0<=t<=2 ...
- POJ1664 放苹果【递推+记忆化递归】
放苹果 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 35209 Accepted: 21792 Description ...
- 算法一:递归(包含Hanoi问题、N皇后问题、逆波兰表达式、爬楼梯、放苹果、全排列)
递归 递归在算法中具有很重要的地位,也是很多学习编程的初学者非常头疼的问题,看我的这篇文章,希望能为还处于迷雾中的你带来希望 首先我们要知道递归的作用: 1.可替代多重循环 2.解决本来就是用递归形式 ...
- 机试:放苹果(递归问题)
通过者的解读 设dp(m,n) 为m个苹果,n个盘子的放法数目,则先对n作讨论, 当n>m:必定有n-m个盘子永远空着,去掉它们对摆放苹果方法数目不产生影响.即if(n>m ...
最新文章
- 2018年中国65家机器人产业园布局与规划汇总盘点
- Linux 文件系统在线扩容实战
- 也可以改为while(input[0])或while(cininput[0])
- 这么多两院院士竟然来自同一个家族!
- 用provide/inject来实现简单的vuex状态管理功能
- gsonformat插件_没用过这些IDEA插件?怪不得写代码头疼
- 【个人笔记】OpenCV4 C++ 图像处理与视频分析 11课
- spark相关原理介绍
- 在html中写python代码的语法和特点-----基于webpy的httpserver
- android数据共享 设计,水文数据共享平台移动端的设计与实现
- oracle时间相减得到天_oracle中计算两个日期之间得天数、月数、年数
- 大龄Android 开发们最担忧的事儿,太难了~
- 数字图像处理 - 什么是数字图像处理
- 07 Python数据类型详解
- 《简约至上》读书笔记
- DeprecationWarning: use options instead of chrome_options self.driver = webdriver.Chrome(chrome_op
- CTF题记——计划第一周
- STM32—驱动HC-SR04超声波测距模块
- 福昕 无法高亮 解决方案及PDF快捷键
- DevOps领域少不了这只向前的“青蛙”