UVa11584 Partitioning by Palindromes
2014-08-09 15:06
363 查看
这题要判断一个串最少由多少个回文串组成。根据紫书上的思路,先是预处理每个区间是否为回文串。然后去dp0~i中的解。dp真的是最灵活的思想!
#include <iostream> #include <stdio.h> #include <cmath> #include <algorithm> #include <iomanip> #include <cstdlib> #include <string> #include <memory.h> #include <vector> #include <queue> #include <stack> #include <map> #include <set> #include <ctype.h> #define INF 1000000 #define ll long long #define min3(a,b,c) min(a,min(b,c)) using namespace std; bool isP[1010][1010]; int dp[1010]; int main(){ int t; cin>>t; char str[1010]; while(t--){ memset(isP,0,sizeof(isP)); cin>>str; int len=strlen(str); for(int i=0;i<len;i++){ for(int j=0;i-j>=0&&i+j<len;j++){ if(str[i+j]!=str[i-j])break; isP[i-j][i+j]=true; } } for(int i=0;i<len;i++){ for(int j=1;i-j+1>=0&&i+j<len;j++){ if(str[i+j]!=str[i-j+1])break; isP[i-j+1][i+j]=true; } } dp[0]=0; for(int i=1;i<=len;i++){ dp[i]=INF; for(int j=0;j<=i;j++){ if(isP[j][i-1])(dp[i]=min(dp[i],dp[j]+1)); } } cout<<dp[len]<<endl; } return 0; }
相关文章推荐
- UVA 11584 - Partitioning by Palindromes
- 【uva-11584】Partitioning by Palindromes(dp)
- UVA 11584 Partitioning by Palindromes
- UVA-11584 Partitioning by Palindromes 动态规划 回文串的最少个数
- Uva 11584 Partitioning by Palindromes (简单DP)
- UVa 11584 Partitioning by Palindromes(DP 最少对称串)
- UVA 11584 Partitioning by Palindromes .
- UVA 11584 - Partitioning by Palindromes DP
- 【Uva 11584】Partitioning by Palindromes
- UVA 11584 Partitioning by Palindromes——dp
- UVa 11584 - Partitioning by Palindromes 回文串dp
- UVA 11584 Partitioning by Palindromes
- UVA 11584 Partitioning by Palindromes
- UVA - 11584 Partitioning by Palindromes DP
- UVA 11584 Partitioning by Palindromes (区间DP)
- Uva-11584-Partitioning by Palindromes
- UVA 11584 一 Partitioning by Palindromes
- UVa 11584 - Partitioning by Palindromes 回文串dp
- UVA-11584 Partitioning by Palindromes (简单线性DP)
- UVA11584 - Partitioning by Palindromes - 动态规划