这篇博客可能字数比较多,而且很难讲清楚,我会努力给你们讲清楚;

首先,放苹果是一道DP,之所以难,是因为很难想到,我的确有同学用三维数组做出来,然而三维的的确比二维好理解,但三维复杂度太高,虽然DP一般数据都给的不大,但复杂度低的算法才是好算法,所以接下来我会给讲一个二维的放苹果的思路;

首先,我们用f[i][j]来代表i个苹果放在j个盘子里,然后就可以推知当i=1或i=0或j=1时f[i][j]=1;

当然,这是必然的;

那么对于复杂的f[i][j]我们可以推知:当盘子数大于苹果数的时候,一定是有盘子装不满的,所以,f[i][j]=f[i][i];

对于苹果数大于盘子数的情况,我们可以考虑f[i][j]从两种情况转移来,一种是有空盘子的情况,另一种是没有空盘子的情况,题目要求是要考虑两种情况,所以f[i][j]只要从两种情况转移过来就好,那么,动态规划的基本思想就是:从当前算过的情况转移过来,所以我们要把对于当前f[i][j]的有空盘子情况用算过的f[i][j]来表示,同理,我们也要用算过的f[i][j]来表示没有空盘子的情况;

由于程序里我的f[i][j]中的i和j是递增来算的,所以,在我们算f[i][j]时,对于f数组的横纵坐标小于当前i,j的情况我们是已经算过的;

所以我们考虑,对于苹果数大于盘子数的f[i][j],没有空盘子就是每个盘子至少有一个苹果的情况,那么每个盘子都有一个苹果,也就是说这些苹果不参与移动,所以我们便可以从f[i-j][j]的情况转移过来,因为对于当前情况,f[i-j][j]是算过的,代表在j个盘子里,只有i-j个苹果可以移动,这就是没有空位的情况;

那么,对于有空盘子的情况,我们可以直接从f[i][j-1]转移过来,原因很简单,因为对于f[i][j-1]来说,我们也考虑过f[i][j-2]的情况,f[i][j-2]是对于f[i][j-1]的空一个盘子的情况,也是对于f[i][j]的空两个的情况,由此递推下去,我们可以的得到空1到空j-1的个盘子的情况,当j==1时,我们就可以得到1,那么一层一层递推上来,就可以得到f[i][j-1];

最后一步,我们只需要把f[i][j-1]+f[i-j][j]就可以得到f[i][j];

以下是附加程序//我觉得我已经讲得够清楚了,应该不用看代码就可以自己写出来

ps1:以上文字还没看懂的去面壁好吗

PS2:这是我在noi.openjudge.cn里A的程序

 #include<stdio.h>
int T,f[][],n,m;
int main()
{
scanf("%d",&T);
for(int i=;i<=;i++)
f[][i]=;
for(int i=;i<=;i++)
{f[][i]=;f[][i]=;}
for(int i=;i<=;i++)
{f[i][]=;f[i][]=;}
for(int i=;i<=;i++)
for(int j=;j<=;j++)
{
if(i>=j)f[i][j]=f[i][j-]+f[i-j][j];
else f[i][j]=f[i][i];
}
while(T--)
{
scanf("%d%d",&m,&n);//苹果M,盘子N
printf("%d\n",f[m][n]);
}
return ;
}

刷题向》DP》放苹果 (normal)的更多相关文章

  1. HDU5697 刷题计划 dp+最小乘积生成树

    分析:就是不断递归寻找靠近边界的最优解 学习博客(必须先看这个): 1:http://www.cnblogs.com/autsky-jadek/p/3959446.html 2:http://blog ...

  2. LeetCode刷题笔记-DP算法-取数问题

    题目描述 (除数博弈论)爱丽丝和鲍勃一起玩游戏,他们轮流行动.爱丽丝先手开局. 最初,黑板上有一个数字 N .在每个玩家的回合,玩家需要执行以下操作: 选出任一 x,满足 0 < x < ...

  3. 【递归】P2386放苹果

    题目相关 题目描述 把 m个同样的苹果放在 n个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法.(5,1,1 和 1,1,5 是同一种方法) 输入格式 第一行是测试数据的数目 t,以下每行 ...

  4. [DP题]放苹果

    放苹果(DP做法) 描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法.输入第一行是测试数据的数目t(0 < ...

  5. $2019$ 暑期刷题记录1:(算法竞赛DP练习)

    $ 2019 $ 暑期刷题记录: $ POJ~1952~~BUY~LOW, BUY~LOWER: $ (复杂度优化) 题目大意:统计可重序列中最长上升子序列的方案数. 题目很直接的说明了所求为 $ L ...

  6. DP刷题记录(持续更新)

    DP刷题记录 (本文例题目前大多数都选自算法竞赛进阶指南) TYVJ1071 求两个序列的最长公共上升子序列 设\(f_{i,j}\)表示a中的\(1-i\)与b中色\(1-j\)匹配时所能构成的以\ ...

  7. 【noi 2.6_666】放苹果 & 【noi 2.6_8467】鸣人的影分身(DP)

    这题其实在2.6前面的专题也有出现过,我还以为我有写,结果发现,并没有.于是就现在写了.这2题其实重复了......我就按放苹果的来说. 题意:把N个苹果放在M个盘子里,允许有的盘子空着不放,问共有多 ...

  8. OpenJudge 666:放苹果 // 瞎基本DP

    666:放苹果 总时间限制:  1000ms     内存限制:  65536kB 描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1 ...

  9. 放苹果问题 DP计数 m个苹果放在n个盘子里,苹果,盘子相同,盘子可为空

    详细的解释放苹果问题的链接:苹果可相同可不同,盘子可相同可不同,盘子可空和不可空,都有详细的说明··· http://www.cnblogs.com/celia01/archive/2012/02/1 ...

随机推荐

  1. hihocoder-1486物品价值(状压dp)

    题目链接: 物品价值 小Hi现在有n个物品,每个物品都有一个价值.并且这n个物品总共有m个不同的属性,每个物品都具有其中若干属性. 小Ho要从中选出若干物品,满足每个属性都正好有奇数个物品拥有,且被选 ...

  2. ng 动态的生成option。

    ngOptions:根据集合,动态的生成option. select ng-options="color.name for color in colorList" 注意跟ng-re ...

  3. Angular提示文件不是一个有效的模块

    ERROR in src/app/app.component.ts(2,23): error TS2306: File '/home/jerry/angular/todo/src/app/model. ...

  4. tomcat8启动慢原因及解决办法

    tomcat8在linux下安装使用一段时间后启动非常慢,6分钟左右. 原因是一个随机数生成参数导致的. 处理如下: 修改catalina.sh .配置JRE使用非阻塞的Entropy Source ...

  5. [QT]安装中出现的问题(安装qt5.8,出现Could not start:"{0,3010,1603,5100} msiexec ...")

    安装环境:win7/10 qt版本: qt-opensource-windows-x86-mingw530-5.8.0 在两台电脑上安装到 qt.tool.perl 的时候就弹出如图的窗口错误,开始以 ...

  6. Android spannableStringBuilder用法整理

    Android spannableStringBuilder用法整理 分类: Android开发2013-11-29 10:58 5009人阅读 评论(0) 收藏 举报 Androidspannabl ...

  7. [转载] FFMPEG视音频编解码零基础学习方法

    在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者.在和大家探讨的过程中,我忽然发现了一个问题:在“ ...

  8. matlab中的开方sqrt用牛顿迭代法实现的代码

    function kaifang = KAIFANG(a)g0=a/2;g1=(g0+a./g0)/2;for i=0 : 299g0=g1;g1=(g0+a./g0)/2;endkaifang = ...

  9. 【Xamarin】MonoTouch - iOS 使用 UIImagePickerController 打开图片库和相机选择图片修改头像

    Application tried to present modally an active controller <UIImagePickerController: 0x7b6ff400> ...

  10. IE 9 下的 css 陷阱

    IE 9 下的 css 陷阱 今天 Karson 老大的分享. 根据说明 当 css 文件超过一定大小时会被自动截断. http://ju.outofmemory.cn/entry/168599