题目描述

把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分发(5,1,1和1,1,5是同一种方法)

输入输出格式

输入格式:

第一行是测试数据的数目t(0 <= t <= 20),以下每行均包括二个整数M和N,以空格分开。1<=M,N<=10

输出格式:

对输入的每组数据M和N,用一行输出相应的K。

输入输出样例

输入样例#1:

1
7 3

输出样例#1:

8

输入样例#2:

3
3 2
4 3
2 7

输出样例#2:

2
4
2

Solution

这道题是我做 P1655 的时候看到的,似乎又是一道DP来解组合数学.

状态很好定义:
\[ f[i][j]\]
表示当前有 i 个苹果,放了 j 个箱子的方案数.

初始化:
1)只有当没箱子或者没苹果的时候我们才赋成0
2)当没有苹果,只有一只箱子的时候,我们赋为1,此时只有一种情况.就是不放

前导状态
1)可以有多个箱子不放,此处通过递归来实现
2)全部都放,所以需要m个苹果来每一层至少垫上一个,然后又剩下n-m个苹果随意放

转移方程:
\[f[i][j]=f[i][j-1]+f[i-j][j]\]

代码

#include<bits/stdc++.h>
using namespace std;
int t;int dp(int n,int m)
{if(n<0||m<1)return 0;if(n==0&&m==1)return 1;return dp(n,m-1)+dp(n-m,m);
}int main()
{ios::sync_with_stdio(false);cin>>t;while(t--){int n,m;cin>>n>>m;cout<<dp(n,m)<<endl;}
}

...

当然了,作为一道组合类的题目,也可以直接作为一道生成函数的模板题来做.但是我似乎没打,只给出一个网址,日后会补生成函数的.
https://blog.csdn.net/dlutjwh/article/details/69217270

转载于:https://www.cnblogs.com/Kv-Stalin/p/9113833.html

[POJ1664] 放苹果 (动态规划,组合数学)相关推荐

  1. POJ-1664 放苹果 动态规划思想解组合数学

    该题说明了状态开设的意义一样,但是从哪个方向去理解推倒状态的转移对解题非常关键.该题扣住是否所有的盘子中有空盘子,就得到了一个非常简单且优美的方程.如果从当前盘子的放置状态或者是当前苹果的放置状态来求 ...

  2. POJ1664 放苹果【递推+记忆化递归】

    放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 35209   Accepted: 21792 Description ...

  3. POJ1664 放苹果问题(递归)

    目录 POJ1664 放苹果问题(递归) 一. 递归简介 二. 题目描述 三. 输入.输出格式 四.输入输出样例 五.题目分析 六.测试代码 一. 递归简介 程序调用自身的编程技巧称为递归( recu ...

  4. POJ-1664 放苹果

    放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 21021   Accepted: 13395 Description ...

  5. 放苹果———动态规划中的划分数问题

    动态规划问题 放苹果是一道典型的DP问题,这道题采用递归+分治+DP的方式解决. 题目描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和 ...

  6. poj1664(放苹果)

    题目链接:http://poj.org/problem?id=1664 关于放苹果的那些事.......... 今天偶然看到一个关于整数划分的算法, 仔细看了后,我想到了放苹果的事,其实这个问题困扰了 ...

  7. 算法实践:放苹果(组合数学)

    放苹果 描述 要寻找克罗克果实,林克需要把苹果放在盘子里,其中只有一种情况可以让克罗克果实出现.所以,林克需要尝试所有的放法. 有M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种 ...

  8. c语言 10分苹果,POJ1664 放苹果 递归 C语言

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

  9. CCF NOI1073 放苹果

    问题链接:CCF NOI1073 放苹果. 时间限制: 1000 ms  空间限制: 262144 KB 题目描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的放法( ...

最新文章

  1. YOLOv3和YOLOv4长篇核心综述(下)
  2. argis怎么关掉对象捕捉_你和你的网恋对象,都怎么样了?
  3. 坐火车一定要带身份证
  4. Java数据类型和MySql数据类型对应表
  5. java asm 中文文档_Java ASM3学习(3)
  6. java中的与或非_与或非 · java development · 看云
  7. UE4加载osgb倾斜摄影数据
  8. 解题报告:hdu1248寒冰王座 - 完全背包模板
  9. Active Directory系列之二:部署第一个域
  10. 39个seo大师级经典案例
  11. 火狐firebug和firepath插件安装方法
  12. java itex 打印pdf_Java使用iTextPDF生成PDF文件的实现方法
  13. Redis中的事务和三特性
  14. 数据挖掘之大数据流处理
  15. 一次Linux遭入侵,挖矿进程被隐藏案例分析
  16. 更改pip镜像源的多种方法
  17. 阿尔法贝塔阀原理_阿尔法(alpha)与贝塔(beta)
  18. 服务器新建虚拟机不识别u盘,虚拟机无法识别u盘如何解决_虚拟机中无法识别u盘的处理办法...
  19. 优鲜遇冷,叮咚还能如期上市吗?
  20. 红外线遥控协议简介(NEC格式)

热门文章

  1. ionic使用ImagePicker插件中文显示
  2. 在Xcode中制作.a文件
  3. 每日命令之vim简单使用
  4. Android 编程下将 Bitmap 转为 InputStream
  5. WiMAX版图不止3G
  6. mysql搜索中文 有的匹配不出来_MYSQL-中文检索匹配与正则表达式
  7. Linux常用命令大全(持续更新)
  8. [swift] LeetCode 338. Counting Bits
  9. 蓝桥杯 ADV-120算法提高 6-17复数四则运算
  10. 如何删掉oracle服务,oracle留下的服务如何删除啊