博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj1664 放苹果
阅读量:6632 次
发布时间:2019-06-25

本文共 827 字,大约阅读时间需要 2 分钟。

1 #include
2 inline int f(int m,int n)//m代表苹果数,n代表盘子数 3 { 4 if(m==0||n==1) return 1;//当没有苹果可放时,定义为1种放法;当n=1时,所有苹果都必须放在一个盘子里,所以返回1; 5 if(n>m) return f(m,m); 6 return f(m,n-1)+f(m-n,n);//递归的两条路,第一条n会逐渐减少,终会到达出口n==1; 第二条m会逐渐减少,因为n>m时,我们会return f(m,m) 所以终会到达出口m==0. 7 8 } 9 int main()10 {11 int m,n,T;12 scanf("%d",&T);13 while(T--){14 scanf("%d%d",&m,&n);15 printf("%d\n",f(m,n));16 }17 return 0;18 }

/*

输入:m个苹果,n个盘子,问多少种不同放法.
算法:设f(m,n) 为m个苹果,n个盘子的放法数目,则先对n作讨论,
当n>m:必定有n-m个盘子永远空着,去掉它们对摆放苹果方法数目不产生影响。即  if(n>m) f(m,n) = f(m,m)  
当n<=m:不同的放法可以分成两类:1、有至少一个盘子空着,即相当于f(m,n) = f(m,n-1); 或2、所有盘子都有苹果,相当于可以从每个盘子中拿掉一个苹果,不影响不同放法的数目,即 f(m,n) = f(m-n,n). 而总的放苹果的放法数目等于两者的和,即 f(m,n) =f(m,n-1)+f(m-n,n)
*/

转载于:https://www.cnblogs.com/shihuajie/archive/2012/08/15/2640435.html

你可能感兴趣的文章
iptables
查看>>
记世界上第一台运行图形化用户界面操作系统的微型电脑
查看>>
DEV报表基础教程(二)
查看>>
Spark的transformation 和 action的操作学习笔记
查看>>
socket远程控制(练手)___源码
查看>>
OPPO F9配置曝光 配备6.3英寸19.5:9触摸屏
查看>>
使用Vue.Js结合Jquery Ajax加载数据的两种方式
查看>>
优化IIS7.5支持10万个同时请求的配置方法_win服务器
查看>>
mysql中自连接查询的妙用:推荐人统计
查看>>
c语言代码缩进和空白
查看>>
我学安卓——运行时hook之onClickListener
查看>>
ios面试题1
查看>>
Snort***检测系统安装配置
查看>>
Linux优化之IO子系统监控与调优
查看>>
Install Toad for Oracle 10.6 on Winows 7 X64
查看>>
发福利喽!学Spark课程送Spark技术峰会的门票........
查看>>
Ubuntu忘记登录密码的解决办法
查看>>
Oracle数据库培训-PLSQL编程
查看>>
突破虚拟化极限,自由畅翔云端
查看>>
F5和VMware-共同交付软件定义的数据中心
查看>>