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 ",xx,f[1][n]); 30 } 31 return 0; 32 }