题目选自洛谷P1164

这是一道简单的动规题,定义f[i][j]为用前i道菜用光j元钱的办法总数,其状态转移方程如下:

(1)if(j==第i道菜的价格)f[i][j]=f[i-1][j]+1;

(2)if(j>第i道菜的价格) f[i][j]=f[i-1][j]+f[i-1][j-第i道菜的价格];

(3)if(j<第i道菜的价格) f[i][j]=f[i-1][j];

说的简单一些,这三个方程,每一个都是在吃与不吃之间抉择。若钱充足,办法总数就等于吃这道菜的办法数与不吃这道菜的办法数之和;若不充足,办法总数就只能承袭吃前i-1道菜的办法总数。依次递推,在最后,我们只要输出f[n][m]的值即可。

题目背景
uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家……餐馆,很低端的那种。
uim指着墙上的价目表(太低级了没有菜单),说:“随便点”。

题目描述
不过uim由于买了一些辅(e)辅(ro)书,口袋里只剩M元(M<=10000)。
餐馆虽低端,但是菜品种类不少,有N种(N<=100),第i种卖ai元(ai<=1000)。由于是很低端的餐馆,所以每种菜只有一份。
小A奉行“不把钱吃光不罢休”,所以他点单一定刚好吧uim身上所有钱花完。他想知道有多少种点菜方法。
由于小A肚子太饿,所以最多只能等待1秒。

输入输出格式
输入格式:

第一行是两个数字,表示N和M。
第二行起N个正数ai(可以有相同的数字,每个数字均在1000以内)。

输出格式:
一个正整数,表示点菜方案数。

输入输出样例
输入样例 1

4 4
1 1 2 2

输出样例 1

3

解题代码:

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>using namespace std;
int n,m;
int val[101],dp[101][10010];
int main(){cin>>n>>m;for(int i=1;i<=n;i++)cin>>val[i];for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){if(j == val[i]) dp[i][j] = dp[i-1][j] + 1; //直接放if(j > val[i]) dp[i][j] = dp[i-1][j] + dp[i-1][j-val[i]];//可以选择放还是不放if(j < val[i]) dp[i][j] = dp[i-1][j]; //放不下}cout<<dp[n][m];return 0;
}

动态规划——小A点菜(洛谷 P1164)相关推荐

  1. P1164 小A点菜 洛谷

    P1164 小A点菜 洛谷 题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家--餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:"随便点&qu ...

  2. 【01背包求方案数模板】洛谷 P1164 小A点菜

    洛谷 P1164 小A点菜 https://www.luogu.org/problemnew/show/P1164 题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家--餐馆, ...

  3. 洛谷——P1164 小A点菜

    P1164 小A点菜 题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家--餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:"随便点" ...

  4. 动态规划——最大子段和(洛谷 P1115)

    题目选择洛谷P1115 经典的动态规划基础题目,最大连续子序列和 状态转移方程为: dp[i] = max{A[i],dp[i-1]+A[i]} 题目描述 给出一个长度为 n 的序列 a,选出其中连续 ...

  5. 小A点菜(洛谷-P1164)

    题目描述 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家--餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:"随便点". 不过uim由于买了 ...

  6. 洛谷 P1164:小A点菜(DP/DFS)

    题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家--餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:"随便点". 题目描述 不过ui ...

  7. (Java实现)洛谷 P1164 小A点菜

    题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家--餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:"随便点". 题目描述 不过ui ...

  8. 洛谷P1164 小A点菜

    题目背景 uim 神犇拿到了 uoi 的 ra(镭牌)后,立刻拉着基友小 A 到了一家--餐馆,很低端的那种. uim 指着墙上的价目表(太低级了没有菜单),说:"随便点". 题目 ...

  9. 小A点菜(洛谷P1164题题解,Java语言描述)

    题目要求 题目链接 分析 用DPDPDP做是必然的,讲讲二维的吧: f[i][j]f[i][j]f[i][j]:用前iii道菜用光jjj元钱的可能组合数 剩下的钱等于第iii道菜的价格时,f[i][j ...

最新文章

  1. [2014百度之星资格赛]
  2. AndroidManifest.xml文件详解(activity)(三)四种工作模式
  3. 支持高并发的IIS Web服务器常用设置
  4. Qt Designer 编辑Tab顺序
  5. 虚函数表 vtable
  6. CentOS 6.X启动流程
  7. 想尝试搭建图像识别系统?这里有一份TensorFlow速成教程
  8. Maven 插件开发
  9. 全国计算机信息大赛noi,全国青少年信息学竞赛NOI系列赛事汇总
  10. E: 无法定位软件包
  11. 快速傅里叶变换(MATLAB实现)
  12. 计算机英语rom是什么意思,rom是什么意思
  13. 市场部商业计划PPT模板
  14. 当前时间距离某个时间的天数计算_Excel如何计算当前距离某一天的时间?,原来是这样的...
  15. 谷歌手机地图中文java_谷歌地图开发(1)使用MapView显示地图
  16. 【MATLAB】一个宝藏博主公开的代码,给它加个速——水晶爱心模块
  17. windows用python读取文件open()函数
  18. 7zip核心算法LZMA源码分析心得
  19. 【Spring】AOP(二)自定义来实现AOP
  20. python,unicode转换中文,中文转换unicode

热门文章

  1. Word2010使用技巧之四:页眉的另类使用
  2. python断言失败_python异常处理、断言
  3. switch中case后可以是表达式吗_Java中的 quot;如果,那么quot; 怎么表达?
  4. python raise语句_Python异常处理,告别xxxxError!
  5. openresty 操作memcached例子
  6. Bash vs. Python:您应该使用哪种语言?
  7. 热门编程语言,热门开源项目,MS-DOS,Python,Calcurse等
  8. 云中数据_简化云中的应用程序开发
  9. linux急救模式_抢救Linux! Windows XP支持今天终止
  10. ES6(ECMAScript2015)/01/ES6简介