數(shù)字三角問題_第1頁
數(shù)字三角問題_第2頁
數(shù)字三角問題_第3頁
數(shù)字三角問題_第4頁
數(shù)字三角問題_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、算法設(shè)計與分析上 機(jī) 實 驗 報 告專 業(yè)軟件工程班 級軟件1101學(xué) 號04113033學(xué)生姓名岳彥利完成日期2013-11-71. 上機(jī)題目及實驗環(huán)境1.1上機(jī)題目:數(shù)字三角形問題1.2實驗環(huán)境:CPU:英特爾 第二代酷睿i3-2330M 2.2GHz 雙核內(nèi)存:4G操作系統(tǒng):windows 7軟件平臺:ubuntu2. 算法設(shè)計與分析小1)根據(jù)題意找出最優(yōu)解的性質(zhì),并刻畫出其結(jié)構(gòu)特性。 2).以自底向上的方式計算出最優(yōu)值。 3).根據(jù)計算最優(yōu)值時得到的信息,構(gòu)造最優(yōu)解。 4).從倒數(shù)第二an-20 開始,將自己與下一行同列的數(shù)組相加在和自己與下一行下一列的數(shù)相加的結(jié)果比較,將大的存放在自

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-)/從倒數(shù)第二層向上求最大和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. 運(yùn)行與調(diào)試 圖一.寫程序時遇到的問題 (路

5、徑出錯) 圖二.修改后的正確結(jié)果 圖三. 另一組數(shù)組測試 5. 結(jié)果分析和小結(jié)如圖一,在寫路徑時最后一個數(shù)輸出結(jié)果過錯誤,經(jīng)過調(diào)試 ,發(fā)現(xiàn)路徑循環(huán)是到倒數(shù)第二行為止的,經(jīng)過修改輸出正確結(jié)果如圖二。如圖二,第一行的數(shù)代表行數(shù),從第二行開始想最后一行找一條和最大的路徑,如圖二。如圖三, 另一組測試結(jié)果。(2)本次上機(jī)實驗的收獲、心得體會。這次的上機(jī)實驗,使我對動態(tài)規(guī)劃法有了更進(jìn)一步的認(rèn)識,編程的時候也有了更多的思路, 在編程之前一定把思路清晰,這樣寫的時候就比較輕松了。解決問題的時候,可以將帶求解的問題分為若干子問題求解,保存子問題的結(jié)果,遇到下一個相同的子問題直接調(diào)用就可以了??梢源蟠蠊?jié)省時間,

6、從而更好的計算出結(jié)果,對找路徑也有了另一種視野。附錄(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-)/從倒數(shù)第二層向上求最大和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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論