666:放苹果(划分dp)
666:放苹果
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
- 把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
- 来源
- lwx@POJ
#include<cstdio>
using namespace std;
int a[][],n,m,t;
void init()
{
/*解题分析:
设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) */ //a[i][j]表示把i个苹果放到j个盘子里
for(int i=;i<=;i++)
a[][i]=,a[i][]=;
for(int i=;i<;i++)
for(int j=;j<=;j++)
if(i>=j)
a[i][j]=a[i][j-]+a[i-j][j];
else
a[i][j]=a[i][j-];
} int main()
{
init();
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
printf("%d\n",a[n][m]);
}
return ;
}
666:放苹果(划分dp)的更多相关文章
- OpenJudge 666:放苹果 // 瞎基本DP
666:放苹果 总时间限制: 1000ms 内存限制: 65536kB 描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1 ...
- 放苹果问题 DP计数 m个苹果放在n个盘子里,苹果,盘子相同,盘子可为空
详细的解释放苹果问题的链接:苹果可相同可不同,盘子可相同可不同,盘子可空和不可空,都有详细的说明··· http://www.cnblogs.com/celia01/archive/2012/02/1 ...
- noi 666 放苹果
题目链接:http://noi.openjudge.cn/ch0206/666/ 和ural 1114题意类似,但是有顺序,5,1,1和1,5,1是同一种序列.不能直接枚举 d(i,j) 前 i 个盘 ...
- OpenJudge 666:放苹果
总时间限制: 1000ms 内存限制: 65536kB 描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. 输 ...
- 1192:放苹果(dp + 搜索)
这道题先用搜索写的,因为我需要先打表来寻找规律. 因为数据量小所以收搜也会过 #include<iostream> #include<cstdio> #include<c ...
- [DP题]放苹果
放苹果(DP做法) 描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法.输入第一行是测试数据的数目t(0 < ...
- openjudge666:放苹果—题解
(测试这里的markdown,同时也有纪念意义吧--第一次写的题解) 当时刚学递推的时候做的一道题 oj上的666题 666:放苹果 总时间限制: 1000ms 内存限制: 65536kB 描述 把M ...
- 递归--练习4--noi666放苹果
递归--练习4--noi666放苹果 一.心得 写出状态后勇敢假设 二.题目 666:放苹果 总时间限制: 1000ms 内存限制: 65536kB 描述 把M个同样的苹果放在N个同样的盘子里,允 ...
- poj1664 放苹果(DPorDFS)&&系列突破(整数划分)
poj1664放苹果 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 33661 Accepted: 20824 Desc ...
随机推荐
- 使用Open Live Writer写博客
1. 下载安装软件 安装包路径http://openlivewriter.org/ 2.配置 打开软件后会提示你配置博客账号地址 3.安装代码高亮插件 下载插件源代码https://pan.baidu ...
- 各种波形文件vcd,vpd,shm,fsdb生成的方法(zz)
仿真是IC设计不可或缺的重要步骤,仿真后一般需要记录下波形文件,用于做详细分析和研究.说一下几种波形文件WLF(Wave Log File).VCD(Value Change Dump)文件,fsdb ...
- UIWindow的一点儿思考
转自:http://www.cnblogs.com/smileEvday/archive/2012/11/16/UIWindow.html 每一个IOS程序都有一个UIWindow,在我们通过模板简历 ...
- CentOS7 使用tab建补全命令
Centos7在使用最小化安装的时候,没有安装自动补全的包,需要自己手动安装,安装下面过滤出来的包 yum -y install bash-completion 安装完毕后退出bash重新登陆生效!
- ISTQB测试人员认证 初级(基础级)大纲
ISTQB测试人员认证 初级(基础级)大纲 ---中文修订版本1(2015年5月6日) 2015-06-22 大纲pdf下载 ISTQB资料中心 在课程大纲中,每个章节都会提供相应的认知水平要求: ...
- C++之虚析构函数
代码一. #include <iostream> using namespace std; class Base { public: Base(){}; ~Base() { cout &l ...
- ELK-“线上标准文档”——测试
Elasticstack官网:https://www.elastic.co 本文档仅限搭建过程参考,使用相关的文档,不在本文档讨论范围之内. 一切依据的核心即是Elasticstack官网. 查看支持 ...
- 去掉Scala的糖衣(4) -- Type Aliase
我的新博客地址:http://cuipengfei.me/blog/2013/12/23/desugar-scala-4/ Scala中有一个type关键字,用来给类型或者是操作起别名,用起来很是方便 ...
- 逻辑表+session
- Ubuntu Python 安装numpy SciPy、MatPlotLib环境
安装 sudo apt-get install python-scipysudo apt-get install python-numpysudo apt-get install python-mat ...