递归—北大POJ 1664 放苹果(集合划分系列,还需再看)
来源:互联网 发布:java大视频断点续传 编辑:程序博客网 时间:2024/05/21 19:37
Description
Input
Output
Sample Input
17 3
Sample Output
8
AC代码:
#include<stdio.h>
int f(int m,int n)
{
if(m==0) //当没有苹果时只有一种情况
return 1;
if(n==1) //当只有一个盘子时也是只有一种情况
return 1;
if(m<n) //当苹果少于盘子数时,不论怎样放至少会有(n-m)个盘子空着,所以就相当于m个苹果和m个盘子
return f(m,m);
if(m>=n) //当苹果多于或等于盘子数时有两种情况:1.至少有一个盘子空着:f(m,n-1)
return f(m,n-1)+f(m-n,n); //2.所有的盘子都不空时相当于每个盘子可以去掉一个苹果,即每次有(m-n)个苹果
/* 递归出口条件说明:
当n=1时,所有苹果都必须放在一个盘子里,所以返回1;
当没有苹果可放时,定义为1种放法;
递归的两条路,第一条n会逐渐减少,终会到达出口n==1;
第二条m会逐渐减少,因为n>m时,我们会return f(m,m) 所以终会到达出口m==0.*/
}
int main()
{
int m,i,n,k;
scanf("%d",&m);
while(m--)
{
scanf("%d%d",&n,&k);
printf("%d\n",f(n,k));
}
return 0;
}
这道题的关键点:1.分析全所有的放苹果的情况,列出递归方程 2.找出临界条件,即递归出口
解题时间:2014年8月1日
解题体会:对于递归还没有掌握,还需要多加练习
- 递归—北大POJ 1664 放苹果(集合划分系列,还需再看)
- POJ 题目1664 放苹果(递归)
- poj 1664 放苹果(递归)
- POJ 1664 放苹果 (递归)
- POJ 1664 放苹果(递归)
- POJ:1664 放苹果(递归,思维)
- poj 1664 放苹果(递归)
- poj 1664 放苹果 递归
- poj 1664 放苹果 dp+划分数
- POJ 1664 放苹果(递归或DP)
- poj--1664--放苹果(递归好体)
- POJ 1664 /NYOJ 758 放苹果问题(递归)
- 经典递归问题--放苹果POJ【1664】
- POJ 1664 放苹果【DFS/递归】
- POJ-----1664---放苹果---递归 思维
- POJ 1664放苹果(递归问题)
- POJ-1664 放苹果(递归的运用)
- POJ,北大OJ,1664 ,放苹果。递推解法。。。
- 背包
- 背包问题的转化
- next_permutation 实现
- 1.guake终端ubuntu;2. Ubuntu 数据库中文问题;3.状态记录
- iOS —— UITableView 常用API
- 递归—北大POJ 1664 放苹果(集合划分系列,还需再看)
- Android使用UncaughtExceptionHandler捕获全局异常
- 裘宗燕:C/C++ 语言中的表达式求值
- 安装linux与分区
- 全新万能PDF转换器官方免费下载
- Android状态系统——View状态设计
- ext 在线中文api
- HDU 1505 City Game
- 基于Android/机顶盒/pc高质量视频通话及手机直播源码转让