数字三角问题_第1页
数字三角问题_第2页
数字三角问题_第3页
数字三角问题_第4页
数字三角问题_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、算法设计与分析上 机 实 验 报 告专 业软件工程班 级软件1101学 号04113033学生姓名岳彦利完成日期2013-11-71. 上机题目及实验环境1.1上机题目:数字三角形问题1.2实验环境:CPU:英特尔 第二代酷睿i3-2330M 2.2GHz 双核内存:4G操作系统:windows 7软件平台:ubuntu2. 算法设计与分析小1)根据题意找出最优解的性质,并刻画出其结构特性。 2).以自底向上的方式计算出最优值。 3).根据计算最优值时得到的信息,构造最优解。 4).从倒数第二an-20 开始,将自己与下一行同列的数组相加在和自己与下一行下一列的数相加的结果比较,将大的存放在自

2、己中。 5).找到最大和之后,又从上往下找到组成这条最大和的路径。3. 核心代码 void maxsum(int (*a)max_num+10,int n)int i,j,max,t;int bn;FILE *fp1;for(i=n-1;i>=1;i-)/从倒数第二层向上求最大和for(j=1;j<=i;j+)if(aij+ai+1j)<(aij+ai+1j+1)aij=(aij+ai+1j+1);elseaij=(aij+ai+1j);if(a21<a22)/由最大和找第二层的路径t=2;max=a22;b1=a11-a22;elset=1;max=a21;b1=a1

3、1-a21;for(i=3;i<=n;i+)从第三层开始找最大和的路径知道第n层if(ait<ait+1)t=t+1;bi-1=max-ait;max=ait;elsebi-1=max-ait;max=ait;bn=ait;printf("路径:n");for(i=1;i<=n;i+)printf("%d ",bi);fp1=fopen("output.txt","wt"); if(fp1=NULL) printf("cannot open!"); exit(0); fprin

4、tf(fp1,"%d",a11);printf("noutput.txt:n");fp1=fopen("output.txt","r"); if(fp1=NULL) printf("cannot open!"); exit(0); / for(i=0;!feof(fp1);i+)/printf("");fscanf(fp1,"%d",&a11);printf("%dn",a11);4. 运行与调试 图一.写程序时遇到的问题 (路

5、径出错) 图二.修改后的正确结果 图三. 另一组数组测试 5. 结果分析和小结如图一,在写路径时最后一个数输出结果过错误,经过调试 ,发现路径循环是到倒数第二行为止的,经过修改输出正确结果如图二。如图二,第一行的数代表行数,从第二行开始想最后一行找一条和最大的路径,如图二。如图三, 另一组测试结果。(2)本次上机实验的收获、心得体会。这次的上机实验,使我对动态规划法有了更进一步的认识,编程的时候也有了更多的思路, 在编程之前一定把思路清晰,这样写的时候就比较轻松了。解决问题的时候,可以将带求解的问题分为若干子问题求解,保存子问题的结果,遇到下一个相同的子问题直接调用就可以了。可以大大节省时间,

6、从而更好的计算出结果,对找路径也有了另一种视野。附录(C/C+源代码)#include<stdio.h>#include<stdlib.h>#include<math.h>#include<time.h>#define max_num 100int amax_num+10max_num+10;void maxsum(int (*a)max_num+10,int n)int i,j,max,t;int bn;FILE *fp1;for(i=n-1;i>=1;i-)/从倒数第二层向上求最大和for(j=1;j<=i;j+)if(aij+a

7、i+1j)<(aij+ai+1j+1)aij=(aij+ai+1j+1);elseaij=(aij+ai+1j);if(a21<a22)/由最大和找第二层的路径t=2;max=a22;b1=a11-a22;elset=1;max=a21;b1=a11-a21;for(i=3;i<=n;i+)从第三层开始找最大和的路径知道第n层if(ait<ait+1)t=t+1;bi-1=max-ait;max=ait;elsebi-1=max-ait;max=ait;bn=ait;printf("路径:n");for(i=1;i<=n;i+)printf(&

8、quot;%d ",bi);fp1=fopen("output.txt","wt"); if(fp1=NULL) printf("cannot open!"); exit(0); fprintf(fp1,"%d",a11);printf("noutput.txt:n");fp1=fopen("output.txt","r"); if(fp1=NULL) printf("cannot open!"); exit(0); / fo

9、r(i=0;!feof(fp1);i+)/printf("");fscanf(fp1,"%d",&a11);printf("%dn",a11);main()int i,j;int n;FILE *fp;printf("input.txt:n");fp=fopen("input.txt","r");if(fp=NULL)printf("cannot open!");exit(0);fscanf(fp,"%d",&n);printf("%dn",n);for(i=1;i<=n;i+)/输出成到三角形式for(j=1;j<=i;j+) f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论