资源描述:
《算法设计与分析课后部分习题答案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
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