【UVA】11584-Partitioning by Palindromes(动态规划)
来源:互联网 发布:什么软件有电视直播 编辑:程序博客网 时间:2024/05/15 10:51
动态规划。
如果 j + 1 ~ i是回文,那么
dp[i] = min=(dp[j] + 1);
判断j + 1~ i是不是回文可以进行预处理,方法是枚举中心,之后向两边伸张,(需要枚举2次,一次是偶数回文,一次是奇数回文)
1399325311584Partitioning by PalindromesAcceptedC++0.1322014-08-05 08:27:39
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<map>#include<stack>#include<queue>#include<set>#include<ctime>#include<cmath>#include<string>#include<iomanip>#include<climits>#include<cctype>#include<deque>#include<list>#include<sstream>#include<vector>#include<cstdlib>using namespace std;#define _PI acos(-1.0)#define INF (1 << 20)typedef long long LL;typedef unsigned long long ULL;typedef pair<int,int> pill;/*======================================*/#define MAXD 1000 + 10char str[MAXD];int s[MAXD][MAXD]; /*i ~ j是不是回文串*/int dp[MAXD];void init(){ scanf("%s",str + 1); int L = strlen(str + 1); memset(s,0,sizeof(s)); /*枚举中心,奇数回文*/ for(int i = 1; i <= L ;i++){ for(int j = i , k = i; j >= 1 && k <= L ; j--,k++){ if(str[j] == str[k]) s[j][k] = 1; else break; } } /*枚举中心,偶数回文*/ for(int i = 1; i <= L ;i++){ for(int j = i , k = i + 1; j >= 1 && k <= L ; j--,k++){ if(str[j] == str[k]) s[j][k] = 1; else break; } } dp[0] = 0; for(int i = 1; i <= L ; i++) dp[i] = INF; return ;}void DP(){ int L = strlen(str + 1); for(int i = 1; i <= L ; i++) for(int j = 0 ; j < i; j++){ if(s[j + 1][i]){ dp[i] = min(dp[i],dp[j] + 1); } } printf("%d\n",dp[L]);}int main(){ int T; scanf("%d",&T); while(T--){ init(); /*预处理*/ DP(); } return 0;}
0 0
- uva 11584 Partitioning by Palindromes (动态规划)
- 【UVA】11584-Partitioning by Palindromes(动态规划)
- UVA 11584 Partitioning by Palindromes 动态规划 入门
- UVa - 11854 - Partitioning by Palindromes (线性动态规划)
- 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
- UVa 11584 - Partitioning by Palindromes
- Uva-11584-Partitioning by Palindromes
- UVA 11584 - Partitioning by Palindromes
- UVA 11584 Partitioning by Palindromes
- UVA 11584 Partitioning by Palindromes
- UVA 11584 Partitioning by Palindromes
- UVA - 11584 Partitioning by Palindromes
- UVa:11584 Partitioning by Palindromes
- Sublime Text 2 实用快捷键[Mac OS X]
- mr任务之从多个Hbase表中读取数据进行处理
- Mongo的安装及使用
- C++标准转换运算符dynamic_cast
- Android中View绘制流程以及invalidate()等相关方法分析
- 【UVA】11584-Partitioning by Palindromes(动态规划)
- hd 2025 查找最大元素
- 巴菲特投资可口可乐的启示
- VS2012下创建和使用DLL (C++)
- “Ceph浅析”系列之(二)—Ceph的设计思想
- ios设备唯一标示符
- 甲 乙 丙 甲 乙 类 放大器
- HDU 1232 畅通工程(并查集)
- HDU-#2112 HDU Today(Dijkstra+map)