AGTC POJ 3356
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 int min(int a,int b,int c){ 5 int temp=a>b?b:a; 6 return temp>c?c:temp; 7 } 8 const int N=1010; 9 char a[N],b[N]; 10 int operations(int m,int n){; 11 int **dp=new int*[m+1]; 12 for(int i=0;i<=m;i++) 13 dp[i]=new int[n+1]; 14 dp[0][0]=0; 15 for(int i=1;i<=m;i++)dp[i][0]=i; 16 for(int i=1;i<=n;i++)dp[0][i]=i; 17 for(int i=1;i<=m;i++) 18 for(int j=1;j<=n;j++){ 19 int edit=a[i-1]==b[j-1]?0:1; 20 dp[i][j]=min(dp[i-1][j-1]+edit/*change or equal*/,dp[i-1][j]+1/*delete*/,dp[i][j-1]+1/*insert*/); 21 } 22 return dp[m][n]; 23 } 24 int main() 25 { 26 int m,n; 27 while(scanf("%d %s %d %s",&m,a,&n,b)!=EOF){ 28 printf("%d\n",operations(m,n)); 29 } 30 return 0; 31 }
posted on 2012-09-08 10:54 Acmer_Roney 阅读(168) 评论(0) 编辑 收藏 举报