1 / 40
文档名称:

acm程序设计与竞赛作业.doc

格式:doc   大小:196KB   页数:40页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

acm程序设计与竞赛作业.doc

上传人:771635255 2018/4/30 文件大小:196 KB

下载得到文件列表

acm程序设计与竞赛作业.doc

相关文档

文档介绍

文档介绍:ACM程序设计与竞赛作业
采药
金字塔问题
毛毛虫问题
Hamming Problem
字符串正反连接
去掉空格
成绩转换
金块问题
工资问题
10.“水仙花数”问题




!

(递归)
18. A+B for Input-Output Practice (I)
19. A+B for Input-Output Practice (II)
20. A+B for Input-Output Practice (III)
21. A+B for Input-Output Practice (IV)


24. i Number _Hdu 2070
25. Pakets
26. 不要62 _Hdu 2089
1问题 B: 采药
时间限制: 1 Sec  内存限制: 128 MB
提交: 87  解决: 72
[提交][状态][讨论版]
题目描述
辰辰是个很有潜能、天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。” 
如果你是辰辰,你能完成这个任务吗?
输入
输入的第一行有两个整数T(1 ≤T ≤1000)和M(1≤M ≤ 100),T代表总共能够用来采药的时间,M代表山洞里的草药的数目。接下来的M行每行包括两个在1到100之间(包括1和100)的整数,分别表示采摘某株草药的时间和这株草药的价值。
输出
输出只包括一行,这一行只包含一个整数,表示在规定的时间内,可以采到的草药的最大总价值。
样例输入
70 3
71 100
69 1
1 2
样例输出
3
#include ""
void main()
{
int a[102][1002]={0};
int t,t1,m1,m,i,i1,k=1;
scanf("%d%d",&t,&m);
scanf("%d%d",&t1,&m1);
for(i1=1;i1<=t;i1++)//处理第一行
{
if(i1>=t1)
a[k][i1]=m1;
}
k++;
for(i=2;i<=m;i++)
{ scanf("%d%d",&t1,&m1);
for(i1=1;i1<=t;i1++)
{
if(i1<t1)//不可能采的情况;
a[k][i1]=a[k-1][i1];
else // 可以采的情况
{
if(a[k-1][i1]>m1+a[k-1][i1-t1])
a[k][i1]=a[k-1][i1]; //采完总价值下降
else
a[k][i1]=m1+a[k-1][i1-t1];//值得采的情况;
}
}
k++;
}
printf("%d",a[m][t]);
}
心得:这是一个动态规划的题目,首先定义一个二维数组,根据草药的性价比,优先采取较高的草药,如果时间不够,则降低性价比继续采取草药,直至时间结束,根据采集的草药计算它的最大值,这题通过比较算出可能采的情况,和不能采的情况,如果能采,那再判断值不值得采,得出最优解。
2问题 A: 金字塔问题
时间限制: 1 Sec  内存限制: 128 MB
提交: 54  解决: 32
[提交][状态][讨论版]
题目描述
給一个金字塔,如上图所示,请你求出一个从塔顶到塔底的路径,要求路径经过的点的数字和最小。
例如上图所示的金字塔的最小路径为:40
输入
输入第一行是一个整数n<1000;
接下来是n行,
第一行一个数;
第二行两个数;
。。。
第n行n个数;
数之间用空格分开。
数的链接方式如图所示。
输出
一个数,就是从塔顶到塔底的路径的最小距离。
样例输入
5
9
12 15
10 6 8
3 18 9 5
19 7 10 4 16
样例输出
40
#include<>
void main()
{
int i,j,n;
int a[100][100];定义一个二维数组;
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<