uva 10739 dp

https://vjudge.net/problem/UVA-10739

   和昨天的那个回文串几乎一样只是加了条件限制,可以随意增删以及替换。

  

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<algorithm>
 5 #include<vector>
 6 #include<stack>
 7 using namespace std;
 8 #define inf 0x3f3f3f3f
 9 int f[1005][1005];
10 char s[1005];
11 int main()
12 {
13     int N=1,M,i,j,k,t;
14     cin>>t;
15     for(int xx=1;xx<=t;++xx)
16     {
17         cin>>(s+1);
18         int n=strlen(s+1);
19         memset(f,0,sizeof(f));
20         for(int len=2;len<=n;++len)
21         {
22             for(i=1,j=len;j<=n;++i,++j)
23             {
24                 f[i][j]=inf;
25                 if(s[i]==s[j]) f[i][j]=f[i+1][j-1];
26                 f[i][j]=min(f[i][j],min(min(f[i][j-1]+1,f[i+1][j]+1),f[i+1][j-1]+1));
27             }
28         }
29         printf("Case %d: %d\n",xx,f[1][n]);
30     }
31     return 0;
32 }

 

posted @ 2017-09-07 11:55  *zzq  阅读(89)  评论(0编辑  收藏  举报