poj 1664 放苹果(递推)
来源:互联网 发布:印度种族等级制度知乎 编辑:程序博客网 时间:2024/06/04 17:50
解题思路:我们不妨令f(m,n)表示m个苹果放到n个盘子里有多少种放法,下面对不同的情况给予讨论:
(1):当盘子数为1的时候,只有一种放法就是把所有苹果放到一个盘子里。
(2):当苹果数为0的时候,也只有一种放法。
(3):当m<n时,因为此时最多只能放到m个盘子中去(一个里放一个),实际上就相当于把m个苹果放到m个盘子里一样,也就是f(m,m);
(4):当m>=n时,也分两种情况讨论,一种是至少有一个盘子里不放苹果,这样子就相当于f(m,n-1),第二种是,先取出n个苹果一个盘子里放一个,再将剩下的m-n个苹果放到n个盘子里去,即f(m-n,n);
综上所述:
得到递归表达式:
f(m,n)=1 当 m=0或n=1;
f(m,n)=f(m,m) ;当m<n;
(1):当盘子数为1的时候,只有一种放法就是把所有苹果放到一个盘子里。
(2):当苹果数为0的时候,也只有一种放法。
(3):当m<n时,因为此时最多只能放到m个盘子中去(一个里放一个),实际上就相当于把m个苹果放到m个盘子里一样,也就是f(m,m);
(4):当m>=n时,也分两种情况讨论,一种是至少有一个盘子里不放苹果,这样子就相当于f(m,n-1),第二种是,先取出n个苹果一个盘子里放一个,再将剩下的m-n个苹果放到n个盘子里去,即f(m-n,n);
综上所述:
得到递归表达式:
f(m,n)=1 当 m=0或n=1;
f(m,n)=f(m,m) ;当m<n;
f(m,n)=f(m-n,n)+f(m,n-1);当m>=n
#include<stdio.h> #include<iostream>using namespace std;long long fun(int m,int n){if(n==1||m==0) return 1;if(n<=m){return fun(m,n-1)+fun(m-n,n);}return fun(m,m);}int main(){int t,n,m;scanf("%d",&t);while(t--){scanf("%d%d",&m,&n);printf("%I64d\n",fun(m,n));}return 0;}
0 0
- POJ 1664 放苹果 递推
- poj 1664 放苹果(递推)
- poj 1664 放苹果(递推)
- poj 1664 放苹果(递推)
- 【POJ 1664】【递推】放苹果
- POJ 1664 放苹果(经典递推)
- poj 1664 放苹果 (递推)
- 【递推】POJ 1664 放苹果
- POJ,北大OJ,1664 ,放苹果。递推解法。。。
- poj 1664 递推(盘子放苹果)
- POJ 1644 放苹果 递推 递归
- pku-1664 放苹果(递推)
- poj 1664 放苹果(递推,记忆化搜索)简单题
- 递归及递推问题系列之 放苹果 poj 1664
- 小白算法练习 poj 1664 放苹果 整数拆分 递推
- POJ1664 放苹果【递推】
- poj 1664 放苹果
- poj 1664 放苹果
- android 中常用的布局方式
- iOS中视频播放 自适应横竖屏显示
- 关于内网IP和外网IP
- 【HDU】3452 Bonsai 最小割模板题
- poj 3750 小孩报数
- poj 1664 放苹果(递推)
- Android 之 下拉框(Spinner)的使用
- hdu-oj 2037 今年暑假不AC
- check style 分析
- 可以做为程序员的优点。
- 悼念512汶川大地震遇难同胞――选拔志愿者(巴什博弈)
- codeforce 141A
- Hive SQL 编译过程详解
- HDU 2066 一个人的旅行 【floyd】