ACM程序设计与竞赛作业要点.doc

ACM程序设计与竞赛作业要点.doc

ID:51834175

大小:256.00 KB

页数:42页

时间:2020-03-16

ACM程序设计与竞赛作业要点.doc_第1页
ACM程序设计与竞赛作业要点.doc_第2页
ACM程序设计与竞赛作业要点.doc_第3页
ACM程序设计与竞赛作业要点.doc_第4页
ACM程序设计与竞赛作业要点.doc_第5页
资源描述:

《ACM程序设计与竞赛作业要点.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、ACM程序设计与竞赛作业1.采药2.金字塔问题3.毛毛虫问题4.HammingProblem5.字符串正反连接6.去掉空格7.成绩转换8.金块问题9.工资问题10.“水仙花数”问题11.大小写转换12.取数游戏13.整除问题14.警察抓小偷15.n!16.汉诺塔问题17.猴子吃桃问题(递归)18.A+BforInput-OutputPractice(I)19.A+BforInput-OutputPractice(II)20.A+BforInput-OutputPractice(III)21.A+BforInput-OutputPractice(IV)22.埃及

2、分数23.完数24.FibbonacciNumber_Hdu207025.Pakets26.不要62_Hdu20891问题B:采药时间限制: 1Sec  内存限制: 128MB提交: 87  解决: 72[提交][状态][讨论版]题目描述辰辰是个很有潜能、天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你

3、是一个聪明的孩子,你应该可以让采到的草药的总价值最大。” 如果你是辰辰,你能完成这个任务吗?输入输入的第一行有两个整数T(1≤T≤1000)和M(1≤M≤100),T代表总共能够用来采药的时间,M代表山洞里的草药的数目。接下来的M行每行包括两个在1到100之间(包括1和100)的整数,分别表示采摘某株草药的时间和这株草药的价值。输出输出只包括一行,这一行只包含一个整数,表示在规定的时间内,可以采到的草药的最大总价值。样例输入7037110069112样例输出3#include"stdio.h"voidmain(){inta[102][1002]={0};int

4、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(i1m1+a[k-1][i1-t1])a[k][i1]=a[k-1][i1];//采

5、完总价值下降elsea[k][i1]=m1+a[k-1][i1-t1];//值得采的情况;}}k++;}printf("%d",a[m][t]);}心得:这是一个动态规划的题目,首先定义一个二维数组,根据草药的性价比,优先采取较高的草药,如果时间不够,则降低性价比继续采取草药,直至时间结束,根据采集的草药计算它的最大值,这题通过比较算出可能采的情况,和不能采的情况,如果能采,那再判断值不值得采,得出最优解。2问题A:金字塔问题时间限制: 1Sec  内存限制: 128MB提交: 54  解决: 32[提交][状态][讨论版]题目描述給一个金字塔,如上图所示,请

6、你求出一个从塔顶到塔底的路径,要求路径经过的点的数字和最小。例如上图所示的金字塔的最小路径为:40输入输入第一行是一个整数n<1000;接下来是n行,第一行一个数;第二行两个数;。。。第n行n个数;数之间用空格分开。数的链接方式如图所示。输出一个数,就是从塔顶到塔底的路径的最小距离。样例输入59121510683189519710416样例输出40#includevoidmain(){inti,j,n;inta[100][100];定义一个二维数组;scanf("%d",&n);for(i=1;i<=n;i++)for(j=1;j<=i;j+

7、+){scanf("%d",&a[i][j]);}for(i=n-1;i>=1;i--)for(j=1;j<=i;j++)//从最后一行开始处理;{if(a[i+1][j]>a[i+1][j+1])a[i][j]=a[i][j]+a[i+1][j+1];elsea[i][j]=a[i][j]+a[i+1][j];//求得每次路径最小值;}printf("%d",a[1][1]);}心得:这个题目主要运用了动态规划的思想,定义一个二维数组,把所输入的数据存入进去,然后从它的第一行处理,比较相邻位置数的大小,取最小的路径和上一行对应的数相加,取得最小路径,进行循环

8、,直到求出数组中a[1][1],即所求

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。