UVa 10739 - String to Palindrome
2013-08-27 10:28
671 查看
/* DP:编辑距离 1.字符串为空或长度为1返回0 2.若子串为原串s的从i到j部分,记[i,j]; 若s[i] == s[j], 则[i,j] = [i+1, j-1]; 若不等 [i,j] = min([i+1,j-1], [i+1, j], [i, j-1]) + 1; */ #include <cstdio> #include <cstring> #include <cctype> #include <algorithm> using namespace std; const int MAXN = 1004; char s[MAXN]; int d[MAXN][MAXN]; int dp() { memset(d, 0, sizeof(d)); int len = strlen(s); for(int l=2; l<=len; l++) { for(int i=0; i<=len-l; i++) { int j = i+l; if(s[i] == s[j-1]) { d[i][j] = d[i+1][j-1]; } else { d[i][j] = min(d[i+1][j-1], min(d[i+1][j], d[i][j-1])) + 1; } } } return d[0][len]; } int main() { #ifndef ONLINE_JUDGE freopen("in.txt", "r", stdin); #endif int t; scanf("%d\n", &t); for(int i=1; i<=t; i++) { gets(s); printf("Case %d: %d\n", i, dp()); } return 0; }
相关文章推荐
- uva 10739 - String to Palindrome(带增删改操作的回文串问题)
- UVa 10739 String to Palindrome String to Palindrome
- uva 10739 String to Palindrome(dp)
- uva10739 - String to Palindrome(简单动归)
- UVA 10739 String to Palindrome(dp)
- UVa 10739 - String to Palindrome
- UVA 10739 - String to Palindrome
- UVa 10739 - String to Palindrome
- uva 10739 String to Palindrome
- UVA 10739 String to Palindrome
- 【UVA】10739 - String to Palindrome(动态规划)
- uva 10739 String to Palindrome
- UVA 10739 String to Palindrome(dp)
- UVA - 10739 String to Palindrome
- UVA - 10739 String to Palindrome
- String to Palindrome - UVa 10739 dp
- UVA 10739 String to Palindrome (区间dp)
- Uva - 10739 - String to Palindrome
- UVA 10739 String to Palindrome(动态规划 回文)
- UVA_10739_StringToPalindrome