uva 10739 String to Palindrome(dp)
来源:互联网 发布:北邮软件下载 编辑:程序博客网 时间:2024/05/16 19:13
题目连接:10739 - String to Palindrome
题目大意:给出一个字符串, 通过增加, 删除或替换一个字符, 使得该字符串变成一个回文串, 要求操作最少, 输出最小的操作步数。
解题思路:对于每个区间[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 <stdio.h>#include <string.h>const int N = 1005;int min(int a, int b) { return a < b ? a : b; }int len, dp[N][N];char str[N];void solve() { len = strlen(str); memset(dp, 0, sizeof(dp)); for (int i = len - 1; i >= 0; i--) {for (int j = i + 1; j < len; j++) { if (str[i] == str[j])dp[i][j] = dp[i + 1][j - 1]; elsedp[i][j] = min( min(dp[i + 1][j], dp[i][j - 1]), dp[i + 1][j - 1]) + 1;} }}int main() { int cas, t = 1; scanf("%d", &cas); while (cas--) {scanf("%s", str);solve();printf("Case %d: %d\n", t++, dp[0][len - 1]); } return 0;}
- UVa 10739 - String to Palindrome 字符串dp
- UVA 10739 String to Palindrome(dp)
- uva 10739 String to Palindrome(dp)
- UVa 10739 String to Palindrome (DP)
- String to Palindrome - UVa 10739 dp
- UVA - 10739 String to Palindrome 区间DP
- UVA 10739 String to Palindrome(DP)
- UVA 10739--String to Palindrome +dp
- uva 10739 - String to Palindrome(区间dp)
- uva 10739 String to Palindrome (dp)
- UVA 10739 String to Palindrome 转换回文 dp递推
- UVA 10739 String to Palindrome (区间dp)
- UVA 题目10739 String to Palindrome(区间DP)
- String to Palindrome+uva+回文串dp
- uva 10739 String to Palindrome
- uva 10739 String to Palindrome
- Uva - 10739 - String to Palindrome
- UVa 10739 - String to Palindrome
- openGL环境搭建
- 调试AT89S52最小系统板札记
- hdu 2824 The Euler function 欧拉函数模板题
- Dev C++编程平台简介一
- coffeescript 整合jquery
- uva 10739 String to Palindrome(dp)
- 递归求数组最大最小值(分治思想)
- 解决MSN无法登录问题的意外收获
- 2013软创基地年度大会(深圳站 20131102)——敏捷落地!
- c++设计模式--单例模式
- [转]C++中运算符优先级表
- UVA 11594 UVA11603(与hdu4700类似) 点对点的最小割 Gomory-Hu 和Gusfield算法学习
- poj 2001 Shortest Prefixes
- RISC和CICS指令流水线的区别