UVa 11584 划分成回文串
https://vjudge.net/problem/UVA-11584
题意:
给出一串字符,把它划分成尽量少的回文串。
思路:
用d[i]表示划分到i时所能划分的最小个数,转移方程为d[i]=min{d[i],d[j]+1},当然前提是j+1~i是回文串,我们可以预处理计算出所有的回文串,这样转移时就比较方便。
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std; const int maxn = + ; int ans[maxn][maxn];
char a[maxn];
int d[maxn]; int main()
{
//freopen("D:\\txt.txt", "r", stdin);
int t;
cin >> t;
while (t--)
{
memset(ans, , sizeof(ans));
memset(d, , sizeof(d));
cin >> a+;
int l = strlen(a+); //打表,判断i~j是否是回文串
for (int i = ; i <= l; i++)
{
for (int j = i; j <= l; j++)
{
int left = i, right = j;
int ok = ;
while (left <= right)
{
if (a[left] != a[right])
{
ok = ;
break;
}
left++;
right--;
}
if (ok) ans[i][j] = ;
}
} d[] = ;
for (int i = ; i <= l; i++)
{
d[i] = d[i-]+;
for (int j = ; j <= i; j++)
{
if (ans[j][i])
d[i] = min(d[i], d[j-] + );
}
}
cout << d[l] << endl;
}
return ;
}
UVa 11584 划分成回文串的更多相关文章
- Uva 11584,划分成回文串
		
题目链接:https://uva.onlinejudge.org/external/115/11584.pdf 题意: 一个字符串,将它划分一下,使得每个串都是回文串,求最少的回文串个数. 分析: d ...
 - UVA - 11584 Partitioning by Palindromes(划分成回文串)(dp)
		
题意:输入一个由小写字母组成的字符串,你的任务是把它划分成尽量少的回文串,字符串长度不超过1000. 分析: 1.dp[i]为字符0~i划分成的最小回文串的个数. 2.dp[j] = Min(dp[j ...
 - UVA11584 划分成回文串
		
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=105116#problem/B 紫书275 题意:输入一个字符,最少能划分几个回文串 分析 ...
 - 随手练——Uva-11584 划分成回文串(区间DP)
		
思路:dp[i]代表到第i位的最小值,枚举它的前几位,求出最小值. 转移方程:dp[ i ] = min(dp[ i ], dp[ j - 1 ] + 1 ) ; 本来觉得,代码加深部分可以提前bre ...
 - Extend to Palindrome UVA - 11475(补成回文串)
		
题意: 就是用最少的字符把原字符串补成回文串 解析: emm/.../网上都是用kmp和后缀数组做的 我没想到这俩的思路...emmm... 想到了exkmp的 就是原串和逆串匹配一下 注意要保证 ...
 - POJ 3280 Cheapest Palindrome(区间DP求改成回文串的最小花费)
		
题目链接:http://poj.org/problem?id=3280 题目大意:给你一个字符串,你可以删除或者增加任意字符,对应有相应的花费,让你通过这些操作使得字符串变为回文串,求最小花费.解题思 ...
 - 完美的代价(swap成回文串、贪心)
		
Description 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的.小龙龙认为回文串才是完美的. 现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串 ...
 - POJ-1159 Palindrome---变成回文串的最小代价
		
题目链接: https://cn.vjudge.net/problem/POJ-1159 题目大意: 题意很明确,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符 ...
 - Palindrome Partitioning LightOJ - 1044(回文串最小分割数,O(n^2)预处理子串是否回文)
		
题意:将一个字符串分割成最少的字符串,使得分割出的每个字符串都是回文串.输出最小的分割数. 方法(自己的):先O(n^2)(用某个点或某个空区间开始,每次向左右扩展各一个的方法)处理出所有子串是否回文 ...
 
随机推荐
- 2017php经典面试题
			
1.PHP语言的一大优势是跨平台,什么是跨平台?一.PHP基础: PHP的运行环境最优搭配为Apache+MySQL+PHP,此运行环境可以在不同操作系统(例如windows.Linux等)上配置,不 ...
 - POJ1014:Dividing(多重背包)
			
http://poj.org/problem?id=1014 Description Marsha and Bill own a collection of marbles. They want to ...
 - Ubuntu 16.04下deb文件的安装
			
pkg 是Debian Package的简写,是为Debian 专门开发的套件管理系统,方便软件的安装.更新及移除.所有源自Debian的Linux发行版都使用dpkg,例如Ubuntu.Knoppi ...
 - node初识——node中的require方法与require.js的区别
			
出处:http://blog.csdn.net/u013613428/article/details/51966500 作为一个前端的新手,总是诧异于js的模块载入方式,看到了通过requireJs提 ...
 - 1:4 UI标签和通用标签
			
UI标签:负责用户界面输出的标签. 非标单:例如错误信息提示的标签 fielderror,actionerror,actionmessagr:系统错误消息的自动显示 通 ...
 - Excel导出插件-VSTO
			
前言 一个游戏通常需要10多个Excel表格或者更多来配置,一般会通过导出csv格式读取配置. 本文提供导出Excel直接生成c#文件,对应数据直接生成结构体和数组,方便开发排错和简化重复写每个表格的 ...
 - REST服务安全-双向认证
			
1. 创建服务器密钥,其密钥库为 d:/mykeys/server.ks,注意keypass和storepass保持一致,它们分别代表 密钥密码和密钥库密码,注意 CN=localhost 中,loc ...
 - 数据仓库基础(八)Informatica 小例子
			
本文转载自:http://www.cnblogs.com/evencao/p/3147843.html 之前看了一段数据库的基础,感觉自己对数据库的基础挺薄弱的.以后再学习其他东西的时候也需要经常能学 ...
 - JavaScript位运算符 2
			
按位运算符是把操作数看作一系列单独的位,而不是一个数字值.所以在这之前,不得不提到什么是“位”: 数值或字符在内存内都是被存储为0和 1的序列,每个0和1被称之为1个位,比如说10进制数据2在计算机内 ...
 - JProfiler8 远程监控tomcat配置过程
			
1. 阅读人群 1.熟悉liunx服务器,起码知道liunx常见的命令 2.熟悉tomcat容器,起码知道怎么tomcat的启动以及停止 3.熟悉java编程语言,JProfiler8是专门监控jav ...