11584 - Partitioning by Palindromes(DP)
来源:互联网 发布:网络主播公司怎么赚钱 编辑:程序博客网 时间:2024/06/05 19:31
和上一题 “照明系统设计”类似,我们可以逐步递推出最优解,d[i] 表示1~i个字符的最优解,那么d[i] = min(d[i],d[j] + 1)|当s[j+1~i]为回文串时。
大家可以自行打印d这个数组,来体会一下状态的转移情况。
代码如下:
#include<bits/stdc++.h>using namespace std;const int maxn = 1000 + 10;const int INF = 2000000000;int T,n,cnt[maxn][maxn],d[maxn];char s[maxn];int main() { scanf("%d",&T); while(T--) { scanf("%s",s+1); n = strlen(s+1); s[0] = '?'; memset(cnt,0,sizeof(cnt)); for(int i=1;i<=n;i++) { // 预处理,cnt[i][j] = 1 表示[i,j]区间为回文串 int L=i, R=i; cnt[i][i] = 1; while(true) { if(s[L] == s[R]) { cnt[L][R] = 1; L--; R++; } else if(s[L]!=s[R]) { L++; R--; break; } if(L<1 || R>n) { L++; R--; break; } } if(s[i]==s[i+1]) { L = i; R = i+1; cnt[i][i+1] = 1; while(true) { if(s[L] == s[R]) { cnt[L][R] = 1; L--; R++; } else if(s[L]!=s[R]) { L++; R--; break; } if(L<1 || R>n) { L++; R--; break; } } } if(s[i]==s[i-1]) { L = i-1; R = i; cnt[i-1][i] = 1; while(true) { if(s[L] == s[R]) { cnt[L][R] = 1; L--; R++; } else if(s[L]!=s[R]) { L++; R--; break; } if(L<1 || R>n) { L++; R--; break; } } } } //dp for(int i=1;i<=n;i++) { d[i] = INF; for(int j=0;j<i;j++) { if(cnt[j+1][i]) { d[i] = min(d[i],d[j] + 1); } } } printf("%d\n",d[n]); } return 0;}
0 0
- uva 11584 - Partitioning by Palindromes (dp)
- 【uva-11584】Partitioning by Palindromes(dp)
- UVA 11584-Partitioning by Palindromes(DP)
- 11584 - Partitioning by Palindromes(DP)
- UVa 11584 - Partitioning by Palindromes(DP)
- UVa 11584:Partitioning by Palindromes(DP)
- 11584 - Partitioning by Palindromes(dp)
- UVA 11584 Partitioning by Palindromes (回文DP,4级)
- UVa 11584 - Partitioning by Palindromes(简单DP)
- Uva 11584 Partitioning by Palindromes(区间dp)
- UVA 11584 Partitioning by Palindromes (区间DP)
- Uva 11584 Partitioning by Palindromes (简单DP)
- uva 11584 - Partitioning by Palindromes(简单dp)
- UVA 11584 - Partitioning by Palindromes(基础dp)
- uva 11584 - Partitioning by Palindromes(DP)
- UVA 11584 - Partitioning by Palindromes DP
- uva 11584 - Partitioning by Palindromes(dp)
- uva 11584 Partitioning by Palindromes | dp
- 内存溢出和内存泄漏的区别
- 工作日志2
- 【j2ee spring】41、巴巴运动网的产品查询
- Climbing the Hill - HDU 4315 阶梯博弈变形
- 支持向量分类机
- 11584 - Partitioning by Palindromes(DP)
- AIX用裸设备扩数据库表空间专题 (前面 + 自己的comments)
- Opencv之Mat::step小记
- WordPress的body_class()函数详解
- 二分查找
- Sicily 1509. Rails
- POJ 3368:Frequent values
- java 单例模式
- android 获取mac地址