uva11584 划分成回文串 线性dp
2016-08-05 00:38
246 查看
状态转移时,常常需要遍历之前的每一种情况来看哪一种情况是最优,比如跳过哪一个串。
判断回文串可以从中心位置开始遍历,预处理往往会加快时间。
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=34398
判断回文串可以从中心位置开始遍历,预处理往往会加快时间。
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=34398
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn = 1000 + 5; int n, kase, vis[maxn][maxn], p[maxn][maxn], d[maxn]; char s[maxn]; int is_palindrome(int i, int j) { if(i >= j) return 1; if(s[i] != s[j]) return 0; if(vis[i][j] == kase) return p[i][j]; vis[i][j] = kase; p[i][j] = is_palindrome(i+1, j-1); return p[i][j]; } int main() { int T; scanf("%d", &T); memset(vis, 0, sizeof(vis)); for(kase = 1; kase <= T; kase++) { scanf("%s", s+1); n = strlen(s+1); d[0] = 0; for(int i = 1; i <= n; i++) { d[i] = i+1; for(int j = 0; j < i; j++) if(is_palindrome(j+1, i)) d[i] = min(d[i], d[j] + 1); } printf("%d\n", d[n]); } return 0; }
相关文章推荐
- UVA 11584 或 BNU20002 划分成回文串 DP求一个串最少能划分成多少个文回串
- uva 11584 划分成回文串
- 划分成回文串(uva 11584)
- uva11584 dp最少回文串划分
- 例题9-7 划分成回文串 UVa11584
- uva 11584(动态规划起步第四天 线性DP)
- UVA 11584 Partitioning by Palindromes 划分成回文串(DP + 预处理)
- uva 划分成回文串 11584 题解
- uva 11584 Partitioning by Palindromes 线性dp
- UVA-11584-Partitioning by Palindromes(区间DP 最小回文串数量)
- UVA-11584 Partitioning by Palindromes (简单线性DP)
- uva11400照明系统设计与uva11584划分成回文串
- 【UVA 11584】【简单dp】Partitioning by Palindromes【给定一个字符串, 问最少分为几部分可使各部分均为回文串】
- UVA11584 划分成回文串
- UVa 11584 划分回文串( 简单dp )
- Uva 11584 线性DP
- uva11584 划分成回文串
- UVa 11584 划分成回文串
- uva11584 划分成回文串
- Partitioning by Palindromes UVA - 11584(线性dp)