算法设计与分析课后部分习题答案

算法设计与分析课后部分习题答案

ID:10819667

大小:36.00 KB

页数:5页

时间:2018-07-08

算法设计与分析课后部分习题答案_第1页
算法设计与分析课后部分习题答案_第2页
算法设计与分析课后部分习题答案_第3页
算法设计与分析课后部分习题答案_第4页
算法设计与分析课后部分习题答案_第5页
资源描述:

《算法设计与分析课后部分习题答案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、算法实现题3-7 数字三角形问题 问题描述: 给定一个由n行数字组成的数字三角形,如图所示。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。 编程任务: 对于给定的由n行数字组成的数字三角形,编程计算从三角形的顶至底的路径经过的数字和的最大值。 数据输入: 有文件input.txt提供输入数据。文件的第1行是数字三角形的行数n,1<=n<=100。接下来的n行是数字三角形各行的数字。所有数字在0-99之间。 结果输出: 程序运行结束时,将计算结果输出到文件output.txt中。文件第1行中的数是计算出的最大值。           输

2、入文件示例                            输出文件示例            input.txt                                  output.txt            5                                          30            7            3 8            8 1 0            2 7 4 4            4 5 2 6 5  源程序: #include "stdio.h" voidmain() { i

3、ntn,triangle[100][100],i,j;//triangle数组用来存储金字塔数值,n表示行数   FILE *in,*out;//定义in,out两个文件指针变量 in=fopen("input.txt","r"); fscanf(in,"%d",&n);//将行数n读入到变量n中   for(i=0;i=0;row--)//从上往下递归计算 

4、for(int col=0;col<=row;col++) if(triangle[row+1][col]>triangle[row+1][col+1]) triangle[row][col]+=triangle[row+1][col]; else triangle[row][col]+=triangle[row+1][col+1]; out=fopen("output.txt","w"); fprintf(out,"%d",triangle[0][0]);//将最终结果输出到output.txt中 }  算法实现题4-9 汽车加油问题 问题描述: 一辆汽车加满油后

5、可行驶nkm。旅途中有若干加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。并证明算法能产出一个最优解。 编程任务: 对于给定的n和k个加油站位置,编程计算最少加油次数。 数据输入: 由文件input.txt给出输入数据。第1行有2个正整数n和k ,表示汽车加满油后可行驶nkm,且旅途中有k个加油站。接下来的1行中,有k+1个整数,表示第k个加油站与第k-1个加油站之间的距离。第0个加油站表示出发地,汽车已加满油。第k+1个加油站表示目的地。结果输出: 将编程计算出的最少加油次数输出到文件output.txt。如果无法到达目的地,则输出"No

6、 Solution“。 输入文件示例                            输出文件示例            input.txt                                  output.txt            7 7                                         4    1 2 3 4 5 1 6 6  源程序: #include"stdio.h" void main() {  FILE *in,*out; inti,s,n,k,x[100],sum=0;//x数组用来存储距离,su

7、m表示加油次数,s表示加油后行驶的距离  in=fopen("input.txt","r"); //读入n,k以及距离 fscanf(in,"%d",&n); fscanf(in,"%d",&k); for(i=0;i<=k;i++) fscanf(in,"%d",&x[i]); for(i=0;i<=k;i++){  if(x[i]>n) printf("No Solution!");} for(i=0,s=0;i<=k;i++){     s+=x[i];  if(s>n) {sum++;  s=x[i];}     }  out=fopen("output

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

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

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