辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”

如果你是辰辰,你能完成这个任务吗?

输入

输入文件medic.in的第一行有两个整数T(1 <= T <= 1000)和M(1 <= M <= 100),用一个空格隔开,T代表总共能够用来采药的时间,M代表山洞里的草药的数目。接下来的M行每行包括两个在1到100之间(包括1和100)的整数,分别表示采摘某株草药的时间和这株草药的价值。

输出

输出文件medic.out包括一行,这一行只包含一个整数,表示在规定的时间内,可以采到的草药的最大总价值。

样例输入 

70 3
71 100
69 1
1 2

样例输出 

3

提示

对于30%的数据,M <= 10;

对于全部的数据,M <= 100。

1.这个问题和装箱问题差不多啦,装箱问题是容量,这个问题说的是时间和价值。

2.我们用dp数组来模拟所有的时间,当我们要这个草药的时候,就是能取这个草药的时间以上的都要加上它的价值。能取草药的时间就是指要比这株草药的时间大,比它时间大的下标的就要考虑。

3.取还是不取,这是一个问题,如果我取了这个草药,那么我要算上前一次不取这个草药的状态,然后加上取这个草药的价值。这个价值如果大于本身(因为每次取的都是最优解),那么我们就要拿这个草药,否则不拿。

4.一步步取值当中,最终dp数组的最后一个会是正确答案,是最优解。

#include<stdio.h>
typedef struct node
{int time;int value;
}NODE;
NODE grass[110];
int dp[1010];int max(int a,int b)
{if(a>b) return a;return b;
}
int main()
{int t,m,i,j;scanf("%d%d",&t,&m);for(i=1;i<=m;i++){scanf("%d%d",&grass[i].time,&grass[i].value);}for(i=1;i<=m;i++){for(j=t;j-grass[i].time>=0;j--){dp[j]=max(dp[j],dp[j-grass[i].time]+grass[i].value);//else dp[i][j]=grass[i].value;}}printf("%d",dp[t]);}

采药(c语言贪心算法)相关推荐

  1. c语言贪心算法ppt,c语言(贪心算法).ppt

    c语言(贪心算法).ppt ACM程序设计,杭州电子科技大学 刘春英 ,2018/12/23,2,最近几天,,你 了吗,AC,2018/12/23,3,每周一星(9),qfwr,2018/12/23, ...

  2. c语言贪心算法合并箭,LeetCode刷题题库:贪心算法

    LeetCode刷题笔记:贪心算法 自大学开始,我便陆陆续续的学习一些 算法和数据结构 方面的内容,同时也开始在一些平台刷题,也会参加一些大大小小的算法竞赛.但是平时刷题缺少目的性.系统性,最终导致算 ...

  3. C语言 · 贪心算法

    发现蓝桥杯上好多题目涉及到贪心,决定学一学. 贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择.也就是说:不从整体最优上考虑,而是在某种意义上的局部最优解.其关键是贪心策略的选择,选择的贪心 ...

  4. 贪心算法设计作业调度c语言,贪心算法 - 数据结构与算法教程 - C语言网

    1.简介 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解. 贪心算法不是对所有问题都能得到整体最优 ...

  5. 贪心算法 0-1背包c语言,贪心算法0-1背包问题(算法实验代码).pdf

    . 实验三. 0-1 背包问题(贪心算法) 实验代码: #include int max(int a,int b) { if(a>b) return a; else return b; } vo ...

  6. 贪心算法无重叠区间c语言,贪心算法之区间问题.md

    --- title: 贪心算法之区间问题 tags: - Leetcode categories: - Leetcode author: 四叶草 top: false abbrlink: 26230 ...

  7. c语言贪心算法找零问题,贪心算法-找零问题-实验报告

    <贪心算法-找零问题-实验报告>由会员分享,可在线阅读,更多相关<贪心算法-找零问题-实验报告(7页珍藏版)>请在人人文库网上搜索. 1.实验三 课程名称:算法设计与实现 实验 ...

  8. c语言贪心算法零钱问题,贪心算法(2)——找零钱问题

    一.找零钱问题 例题1: 有 1 元,5元,10元,20元,100元,200元的钞票无穷多张.现在使用这些钞票支付X元,最少需要多少张钞票. X = 628 最佳支付方法: 3张200块的,1张20块 ...

  9. 贪心算法解决最优装载问题c语言,贪心算法解决最优装载问题

    <贪心算法解决最优装载问题>由会员分享,可在线阅读,更多相关<贪心算法解决最优装载问题(4页珍藏版)>请在人人文库网上搜索. 1.author : Kevin Black/这个 ...

最新文章

  1. python读取excel某一列内容-Python读取Excel数据并根据列名取值
  2. 安卓实训项目:音乐播放器3.0——实训报告3
  3. Spring 中的 bean 为什么默认单例?
  4. Windows 10 不能安装更新 (0x8024402f)
  5. 简单的WinInet编程
  6. JavaScript --- this
  7. REST 101开发人员专用
  8. 【antd】输入控件的思想
  9. 修理牧场(哈夫曼树 )
  10. Python版24点游戏
  11. 全新的 Discuz! Q 来了!
  12. Java字符串contains()
  13. 理解createTrackbar函数
  14. 北京市内可以攀登的八座山
  15. 框架内(React)网页打印的实现
  16. adb shell dumpsys activity activities调用信息简析
  17. Zabbix 4.2 支持 Prometheus 数据收集
  18. c#实现短信发送程序
  19. iOS 数据库升级策略
  20. Matlab之图像平移(七)

热门文章

  1. 一小球从100米高度落下,每次落地后反弹原来高度的一半,问第十次落地经过的路径多长?第十次落地后反弹多高?
  2. vscode快速生成代码块
  3. android app 清理缓存图片,支付宝APP怎么清理缓存 支付宝安卓版缓存清理方法
  4. E. Vowels(SOSdp的简单转化)
  5. pgsql之create user与create role的区别
  6. 短音频识别(一句话识别)接口设计方案
  7. 高中数学必考公式全总结
  8. 简单随机选人网站设计
  9. 单片机PWM输出控制直流电机(89c51系列、stc12c5a60s2系列)
  10. 如何培养忠诚客户以及培养忠诚客户的重要性