首页 > 代码库 > uva 1548 Partitioning by Palindromes(动态规划)
uva 1548 Partitioning by Palindromes(动态规划)
#include <iostream>#include <string.h>#include <string>#define N 1002using namespace std;int f[N];bool d[N][N];/* 如果(i,j)回文(i<=j),那么最小长度一定等于f[j+1]+1 用动态规划解决回文串的判断节省时间,牺牲空间 */ int main(){// freopen("D:/Documents/work/in.txt", "r", stdin); int n, t, i, j, result; cin>>t; while(t--) { string s; cin>>s; n=s.length(); memset(f, 1000000, sizeof(f)); memset(d, false, sizeof(d)); for (int i = 0; i <= n; i++) f[i] = n-i; for (int i = n - 1; i >= 0; i--) { for (int j = i; j < n; j++) { if (s[i] == s[j] && (j-i<2 || d[i+1][j-1])) { d[i][j] = true; f[i] = min(f[i], f[j+1]+1); } } } cout<<f[0]<<endl; } return 0;}
uva 1548 Partitioning by Palindromes(动态规划)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。