您的位置:首页 > 其它

字串距离(字符串dp)

2017-10-20 22:45 204 查看
#include<iostream>

#include<cstdio>

#include<cstring>

#include<algorithm>

using namespace std;

char s[1100];

int dp[1010][1010];

int main(){

 scanf("%s",s+1);

 int n=strlen(s+1);

 //cout<<n<<endl;

 memset(dp,0x7f,sizeof(dp));

 /*for(int i=1;i<n;i++){

  if(s[i]==s[i+1]) dp[i][i+1]=0;

  else dp[i][i+1]=1;

 }*/

 for(int i=1;i<=n;i++) dp[i][i]=0;

 for(int i=1;i<n;i++) if(s[i]==s[i+1]) dp[i][i+1]=0;

 else dp[i][i+1]=1;

 for(int k=2;k<=n;k++){

  for(int i=1;i<=n;i++){

   int j=i+k;

   if(j>n) continue;

   if(s[i]==s[j]) dp[i][j]=min(dp[i][j],dp[i+1][j-1]);

   else dp[i][j]=min(dp[i+1][j],dp[i][j-1])+1;

  }

 }

 cout<<dp[1]
<<endl;

 return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: