HDU -2546饭卡(01背包+贪心)
2024-08-25 11:40:53
这道题有个小小的坎,就是低于5块不能选,大于5块,可以任意选,所以就在初始条件判断一下剩余钱数,然后如果大于5的话,这时候就要用到贪心的思想,只要大于等于5,先找最大的那个,然后剩下的再去用背包去选择,这样的结果一定是最优的。因为最大的那个一定会被选中,剩下多少钱都无所谓,用背包可以获得剩下的最优解,所以最后也是最优解
代码如下
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = ;
int dp[N];
int value[N];
int main()
{
int n;
while (scanf("%d", &n) == , n)
{
for (int i = ; i < n; i++)
scanf("%d", &value[i]);
int v;
scanf("%d", &v);
if (v < )//如果初始条件都不满足,直接输出金额
{
printf("%d\n", v);
continue;
}
sort(value, value + n);//排序
memset(dp, , sizeof(dp));
//01背包
for (int i = ; i < n - ; i++)
{
for (int j = v - ; j >= value[i]; j--)
if (dp[j] < dp[j - value[i]] + value[i])
dp[j] = dp[j - value[i]] + value[i];
}
printf("%d\n", v - dp[v - ] - value[n - ]);
}
return ;
}
最新文章
- C#中的Excel操作【1】——设置Excel单元格的内容,打开Excel文件的一种方式
- vmware安装ubuntu12.04嵌套安装xen server(实现嵌套虚拟化)
- nutch-2.1导入eclipse+mysql运行
- H20的题——[noip2003]银河英雄传(并查集)
- 今天踩过的坑——structs和spring
- Python中的日志管理Logging模块
- 虚反矩阵指令pinv之应用
- 让你的Windows不断重启的C语言代码
- Java学习笔记之I/O
- A tutorial that will show you how to build an instant messaging app with Sinch.
- webpack配置之代码优化
- Python中的test测试
- c++: internal compiler error: Killed
- 关于爬虫中常见的两个网页解析工具的分析 —— lxml / xpath 与 bs4 / BeautifulSoup
- Git -- 本地 一个相同的新的分支 并 推送到远程仓库
- 标准库 os、sys、logging、configparser、time、requests
- C#数组维数及不同维数中元素个数的获取
- rsync更改端口后的同步办法
- 用lua扩展你的Nginx(整理)
- git 知识点