動態(tài)規(guī)劃習題課件_第1頁
動態(tài)規(guī)劃習題課件_第2頁
動態(tài)規(guī)劃習題課件_第3頁
動態(tài)規(guī)劃習題課件_第4頁
動態(tài)規(guī)劃習題課件_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

課程安排

12345678910111213141516周二PPTTPTTPTTPTTTTP周四PPPPPPPPPPPPPP端午考試

T1課程安排12345678910111213141516周二第3章動態(tài)規(guī)劃習題課第3章動態(tài)規(guī)劃習題課最長單調遞增子序列(習題3-1)設計一個O(n2)時間的算法,找出由n個數(shù)組成的序列的最長單調遞增子序列。輸入第1個整數(shù)n(0<n<100),表示后面有n個數(shù)據(jù),全部為整數(shù)輸出輸出最長單調遞增子序列的長度;樣例輸入865158170155239300207389樣例輸出63最長單調遞增子序列(習題3-1)設計一個O(n2)時間的算法最長單調遞增子序列用數(shù)組b[0:n-1]記錄以a[i](0≤i<n)為結尾元素的最長遞增子序列的長度。序列a的最長遞增子序列的長度為:max{b[i]}顯然,b[i]滿足最優(yōu)子結構性質,可以遞歸的定義為:b[0]=1;b[i]=max{b[k]}+1即k在0~(i-1)范圍內,若a[k]≤a[i],尋找最大的b[k].據(jù)此將計算b[i]轉化為i個規(guī)模更小的子問題。0≤i<n0≤k<ia[k]≤a[i]6515817015523930020738912324546ik4最長單調遞增子序列用數(shù)組b[0:n-1]記錄以a[i](0最長單調遞增子序列intmain(){ intn; scanf("%d",&n); inta[100]; for(inti=0;i<n;i++) scanf("%d",&a[i]); printf("%d\n",LISdyna(a,n));}樣例輸入8651581701552393002073895最長單調遞增子序列intmain(){樣例輸入5最長單調遞增子序列intmain(){ intn; scanf("%d",&n); inta[100]; for(inti=0;i<n;i++) scanf("%d",&a[i]); printf("%d\n",LISdyna(a,n));}intLISdyna(inta[],intn){ intb[100]={0}; inti,j; b[0]=1; for(i=1;i<n;i++){ intk=0; //0~i-1之間,b的最大值 for(j=0;j<i;j++) if(a[j]<=a[i]&&k<b[j])k=b[j]; b[i]=k+1; } intmax=0; for(i=0;i<n;i++) if(b[i]>max)max=b[i]; returnmax;}6最長單調遞增子序列intmain(){intLISdy編輯距離問題設A和B是2個字符串。要用最少的字符操作將字符串A轉換為字符串B。這里所說的字符操作包括:刪除一個字符;插入一個字符;將一個字符改為另一個字符。 將字符串A變換為字符串B所用的最少字符操作數(shù)稱為字符串A到B的編輯距離,記為d(A,B)。試設計一個有效算法,對任給的2個字符串A和B,計算出它們的編輯距離d(A,B)。編程任務: 對于給定的字符串A和字符串B,編程計算其編輯距離d(A,B)。7編輯距離問題設A和B是2個字符串。要用最少的字符操作將編輯距離問題數(shù)據(jù)輸入: 第一行是字符串A,第二行是字符串B。結果輸出: 程序運行結束時,輸出編輯距離d(A,B)。輸入文件示例fxpimuxwrs輸出文件示例58編輯距離問題數(shù)據(jù)輸入:8編輯距離問題設所給的2個字符串為A[1…m]和B[1…n],定義:D[i,j]=δ(A[1…i],B[1…j]),單字符a,b之間的距離為:考察從字符串A[1…i]到字符串B[1…j]的變換:字符A[i]改為字符B[j],需要δ(A[i],B[j])次操作;刪除字符A[i],需要1次操作;插入字符B[j],需要1次操作。因此,D[i,j]遞歸計算如下:D[i,j]=min{D[i-1,j-1]+δ(A[i],B[j]),

D[i-1,j]+1,

D[i,j-1]+1}D[i,j]的初始值為:D[i,0]=i,i=0~m;D[0,j]=j,j=0~n9編輯距離問題設所給的2個字符串為A[1…m]和B[1…n],編輯距離問題計算δ(A,B)的動態(tài)規(guī)劃算法:functionEdit_Distance(A,B,m,n):integer;begin fori:=1tomdoD[i,0]:=i; forj:=1tondoD[0,j]:=j; fori:=1tomdo forj:=1tondo begin D[i,j]:=∞; ifA[i]=B[j]thenδ:=0elseδ:=1; ifD[i,j]>D[i-1,j-1]+δthenD[i,j]=D[i-1,j-1]+δ; ifD[i,j]>D[i-1,j]+1thenD[i,j]=D[i-1,j]+1; ifD[i,j]>D[i,j-1]+1thenD[i,j]=D[i,j-1]+1; end;

Edit_Distance:=D[m,n]end;{Edit_Distance}10編輯距離問題計算δ(A,B)的動態(tài)規(guī)劃算法:10編輯距離問題afxpium長度:mbxwrs長度:nd12345刪除一個字符; del插入一個字符; y將一個字符改為另一個字符。 z11編輯距離問題afxpium長度:mbxwrs長度:nd123編輯距離問題chara[100],b[100];scanf("%s%s",a,b);intm=strlen(a);intn=strlen(b);intd[101];inti,j;for(i=1;i<=n;i++) d[i]=i;for(i=1;i<=m;i++){ inty=i-1; for(j=1;j<=n;j++){ intx=y; y=d[j]; intz=j>1?d[j-1]:i; intdel=a[i-1]==b[j-1]?0:1;

d[j]=min(x+del,y+1,z+1);

}}printf("%d\n",d[n]);xwrsid[1]d[2]d[3]d[4]f11234x21234p32234i43334u54444m65555刪除一個字符; del插入一個字符; y將一個字符改為另一個字符。 z12編輯距離問題chara[100],b[100];xwrsi數(shù)字三角形問題 給定一個由n行數(shù)字組成的數(shù)字三角形如下圖所示。 試設計一個算法,計算出從三角形的頂至底的一條路徑,使該路徑經過的數(shù)字總和最大。

7 38 810 2744 45265編程任務: 對于給定的由n行數(shù)字組成的數(shù)字三角形,編程計算從三角形的頂至底的路徑經過的數(shù)字和的最大值。13數(shù)字三角形問題 給定一個由n行數(shù)字組成的數(shù)字三角形如下圖所示數(shù)字三角形問題數(shù)據(jù)輸入: 第1行是數(shù)字三角形的行數(shù)n,1≤n≤100。接下來n行是數(shù)字三角形各行中的數(shù)字。所有數(shù)字在0~99之間。結果輸出: 程序運行結束時,第1行中的數(shù)是計算出的最大值。輸入示例

5738810274445265輸出文件示例 3014數(shù)字三角形問題數(shù)據(jù)輸入:14數(shù)字三角形問題for(introw=n-2;row>=0;row--)for(intcol=0;col<=row;col++) if(triangle[row+1][col]>triangle[row+1][col+1]) triangle[row][col]+=triangle[row+1][col]; elsetriangle[row][col]+=triangle[row+1][col+1];

7 38 810

2744 45265row0n-2n-1col(row+1,col+1)(row+1,col)15數(shù)字三角形問題for(introw=n-2;row>=租用游艇問題長江游艇俱樂部在長江上設置了n個游艇出租站1,2,…,n。游客可在這些游艇出租站租用游艇,并在下游的任何一個游艇出租站歸還游艇。游艇出租站i到游艇出租站j之間的租金為r(i,j),1<=i<j<=n。試設計一個算法,計算出從游艇出租站1到游艇出租站n所需的最少租金。編程任務: 對于給定的游艇出租站i到游艇出租站j之間的租金為r(i,j),1<=i<j<=n,編程計算從游艇出租站1到游艇出租站n所需的最少租金。16租用游艇問題長江游艇俱樂部在長江上設置了n個游艇出租站1租用游艇問題數(shù)據(jù)輸入: 第1行中有1個正整數(shù)n(n<=200),表示有n個游艇出租站。接下來的n-1行是r(i,j),1<=i<j<=n。結果輸出: 程序運行結束時,輸出從游艇出租站1到游艇出租站n所需的最少租金。輸入示例35157輸出示例12123515717租用游艇問題數(shù)據(jù)輸入:1235input:7131524442950161882153726438121299411Output:25租用游艇問題12345671315244429501234567113152444295021618821533726438412129594611718input:租用游艇問題123租用游艇問題01234560131524442950116188215327264383121294945116123456013152221192510161881712200719415300012112400009450000011i=1p=2j=5i=1p=3j=5i=1p=4j=5123456013152221295010161881753200719438300012112400009450000011i=1p=2j=4i=1p=3j=4123456013152244295010161882153200719438300012129400009450000

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論