字串距离(字符串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;
}
#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;
}
相关文章推荐
- 最大子序列,最长递增子序列,最长公共字串,最长公共子序列,字符串编辑距离
- 【DP总结】【字符串】最短编辑距离
- Vijos1680距离/openjudge2988计算字符串的距离[DP]
- ACM 375. 字符串的距离(dp)
- 字符串距离 简单DP
- DP求两个字符串的编辑距离
- DP求两个字符串的编辑距离
- 字符串A和B的扩展距离,简单dp(动态规划)
- sdutoj1225--编辑距离(dp:字符串转化)
- 日记★DP★G-字串距离
- 20170828_字符串编辑距离_字符串相似度_DP
- 2016东莞市特长生考试 字串距离(dp)
- LeetCode-72. Edit Distance (JAVA)字符串最小编辑距离DP&DFS
- sdutoj1225--编辑距离(dp:字符串转换)
- 字符串相关算法(编辑距离,最大公共字串)C#实现版
- LeetCode:Edit Distance(字符串编辑距离DP)
- HDU 4271 Find Black Hand 求字串编辑距离dp
- 字符串编辑距离 经典 dp
- dp练习题2 计算字符串距离
- OpenJudge_P2988 计算字符串距离(DP)