AGTC POJ 3356

 

 

View Code
 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编辑  收藏  举报

导航