UVA - 10739 String to Palindrome
2015-03-15 23:51
357 查看
题目大意:给出一个字符串, 通过增加, 删除或替换一个字符, 使得该字符串变成一个回文串, 要求操作最少, 输出最小的操作步数。
解题思路:对于每个区间[i, j]:
1、str[i] == str[j], dp[i][j] = dp[i + 1][j - 1];
2、 str[i] != str[j], dp[i][j] = min(dp[i + 1][j], dp[i] [j - 1], dp[i + 1] [j - 1]) + 1 (分别对应三个操作方式)
#include <cstdio>
#include <cstring>
char s[1050];
int DP[1050][1050];
int DPS(int x, int y) {
if (DP[x][y] != -1)
return DP[x][y];
if (x == y || x == y + 1)
return DP[x][y] = 0;
if (s[x] == s[y])
return DP[x][y] = DPS(x + 1, y - 1);
int k = DPS(x + 1, y);
if (k > DPS(x, y - 1))
k = DPS(x, y - 1);
if (k > DPS(x + 1, y - 1))
k = DPS(x + 1, y - 1);
return DP[x][y] = k + 1;
}
int main() {
int T, cnt = 0;
scanf("%d\n", &T);
while (T--) {
scanf("%s", s);
memset(DP, -1, sizeof(DP));
printf("Case %d: %d\n", ++cnt, DPS(0, strlen(s)-1));
}
return 0;
}
解题思路:对于每个区间[i, j]:
1、str[i] == str[j], dp[i][j] = dp[i + 1][j - 1];
2、 str[i] != str[j], dp[i][j] = min(dp[i + 1][j], dp[i] [j - 1], dp[i + 1] [j - 1]) + 1 (分别对应三个操作方式)
#include <cstdio>
#include <cstring>
char s[1050];
int DP[1050][1050];
int DPS(int x, int y) {
if (DP[x][y] != -1)
return DP[x][y];
if (x == y || x == y + 1)
return DP[x][y] = 0;
if (s[x] == s[y])
return DP[x][y] = DPS(x + 1, y - 1);
int k = DPS(x + 1, y);
if (k > DPS(x, y - 1))
k = DPS(x, y - 1);
if (k > DPS(x + 1, y - 1))
k = DPS(x + 1, y - 1);
return DP[x][y] = k + 1;
}
int main() {
int T, cnt = 0;
scanf("%d\n", &T);
while (T--) {
scanf("%s", s);
memset(DP, -1, sizeof(DP));
printf("Case %d: %d\n", ++cnt, DPS(0, strlen(s)-1));
}
return 0;
}
相关文章推荐
- UVA 10739 String to Palindrome
- UVA 10739 - String to Palindrome
- UVA 10739 String to Palindrome(dp)
- UVA 10739 String to Palindrome
- uva10739 - 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
- 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 String to Palindrome
- String to Palindrome - UVa 10739 dp
- UVa:10739 String to Palindrome
- UVA - 10739 String to Palindrome