ACM试题,要用动态规划解决,C或C++的程序

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

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

输出:
可能有多组测试数据,对于每组数据,
输出只包括一行,这一行只包含一个整数,表示在规定的时间内,可以采到的草药的最大总价值。

样例输入:
70 3
71 100
69 1
1 2样例输出:
3
求源代码(加上注释的)

第1个回答  2012-03-19
是一个背包,可以去学习一下

#include<stdio.h>
#include<string.h>
const int MAX=1005;
int dp[MAX];
int v,p;
int main()
{
int n,m,i;
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(dp,0,sizeof(dp));
while(m--)
{
scanf("%d%d",&v,&p);
for(i=n;i>=v;i--)
if(dp[i-v]+p>dp[i])
dp[i]=dp[i-v]+p;
}
printf("%d\n",dp[n]);
}
return 0;
}追问

兄弟加点注释吧,只有源码不容易看懂

追答

简单背包不解释。你可以百度一下背包。好好学习学习吧

本回答被提问者采纳

求ACM大侠。数字金字塔,要用到动态规划。最好用C++。谢谢!
\/\/程序是用c写的,稍微弄下就变c++了 include <stdio.h> long l[1002][1002]={0}; \/\/数组比较大,所以用全局的 int main(){ int i,j,n;long max=0; \/\/max用来存最大的路径和 scanf("%d",&n);for(i=1;i<=n;i++)for(j=1;j<=i;j++){ scanf("%ld",&l[i][j])...

参加acm需要学什么?
其实acmer们都是自己训练的啊,这种东西只能自己学哈~先从基本的开始吧,把c\/c++练熟了,java要掌握一些。然后就是算法上的东西了。算法的学习是比较痛苦的,书建议看算法导论,算法艺术与信息学竞赛,具体数学,柔性字符串匹配,然后是去各大oj上训练做题,推荐poj,zoj,hdoj,还有各种比赛。下面是详...

acm竞赛大一要准备什么
ACM竞赛是一项对大学生的计算机编程能力进行检验的国际赛事,作为大一学生,你应当从多方面着手准备。首先,夯实计算机基础知识是关键,涵盖数据结构、算法、编程语言(C++、Java、Python等)的学习,这些知识在竞赛中会起到决定性作用。其次,要多加练习编程,通过解决在线编程题目来提高编程技能,如LeetCode、...

我需要 ACM国际大学生程序设计竞赛题解(2),求发这教材的网盘链接
《ACM国际大学生程序设计竞赛题解(1)》可以作为高等院校有关专业的本科和大专学生参加国际大学生程序设计竞赛的辅导教材,或者作为高等院校数据结构、C\/C++程序设计或算法设计与分析等相关课程的教学参考书。随着各大专院校参加ACM\/ICPC热情的高涨,迫切需要有关介绍ACM国际大学生程序设计竞赛题解的书籍。《AC...

在准备ACM笔试题目时,需要采取什么样的策略?
准备ACM笔试题目时,可以采取以下策略:1.熟悉算法和数据结构:ACM题目主要考察算法和数据结构的应用能力。因此,首先要熟悉常见的算法和数据结构,如排序、查找、图论、动态规划等。可以通过刷题网站、参加算法竞赛等方式来提高自己的算法水平。2.多做练习题:通过做大量的练习题,可以提高自己的编程能力和...

关于ACM竞技大赛
个人关点,你可以看点算法书之类的,好像对计算机专业的学生在大一的时候也没有学什么好专业的知识,和其它的学的都差不了太多,我是学软件工程的,我们现在也只学了C语言,数据结构,你看下数据结构,学习学习算法思想,然后再找个OJ做点题练习下就差不多了,当然如果要取得好成绩是要下很多功夫的,...

请教做ACM的常用算法..还是菜鸟
做acm的话入门比较难,水平提升更加困难,要做好充足的准备哦我的建议是:1.可以先做一些简单的不涉及算法知识,简单的水题上手,oj上通过率很高做的人很多的就是啦2.上手了以后可以针对特定算法进行练习,网上有很多的题目分类,你可以对着分类练习算法,最简单的贪心算法,到动态规划,搜索等等,计算机专业有一门课叫做计算...

ACM国际大学生程序设计竞赛
参赛者每队最多由三名在校大学生组成,年龄有相应限制,每年最多可以参加两站区域选拔赛。比赛在五小时内使用C\/C++、Java和Python中的一种编写程序解决7至13个问题。程序完成后提交评测机运行,结果会判定为正确或错误两种,并及时通知参赛队。每正确完成一题后,组织者会在其位置上升起代表该题颜色的...

ACM·ICPC程序设计与分析内容简介
《ACM\/ICPC程序设计与分析(C++实现)》全面介绍了ACM国际大学生程序设计竞赛的概况与基础编程知识。本书系统阐述了数论、组合数学、动态规划、计算几何、搜索、图论和网络流等关键算法,通过分析历年竞赛中的典型题目,帮助读者掌握编程技巧。各章节包含例题与习题,并提供输入输出样例,方便读者在实际编程中测...

acm1597题没过Time Limit Exceeded如何解?
算法优化可以从减少不必要的计算、避免重复计算、使用动态规划或贪心策略等方面入手。在解决 ACM 1597 题目时,根据上述方法,可以通过代码优化、数据结构选择和算法改进等策略,有效提升程序的执行效率,解决“Time Limit Exceeded”的问题。通过实践这些建议,可以显著提高程序性能,避免超时错误的出现。

相似回答