POJ1159——Palindrome

北大POJ1159-Palindrome 立即下载
Palindrome
Time Limit: 3000MS Memory Limit: 65536K
Total Submissions: 53647 Accepted: 18522

Description

A palindrome is a symmetrical string, that is, a string read identically from left to right as well as from right to left. You are to write a program which, given a string, determines the minimal number of characters to be inserted into the string in order to obtain a palindrome.

As an example, by inserting 2 characters, the string "Ab3bd" can be transformed into a palindrome ("dAb3bAd" or "Adb3bdA"). However, inserting fewer than 2 characters does not produce a palindrome.

Input

Your program is to read from standard input. The first line contains one integer: the length of the input string N, 3 <= N <= 5000. The second line contains one string with length N. The string is formed from uppercase letters from 'A' to 'Z', lowercase letters from 'a' to 'z' and digits from '0' to '9'. Uppercase and lowercase letters are to be considered distinct.

Output

Your program is to write to standard output. The first line contains one integer, which is the desired minimal number.

Sample Input

5
Ab3bd

Sample Output

2

Source

IOI 2000

问你加入多少字符使得字符串变成回文串

我们对字符串和他的逆序串求一个最长公共子序列,这样一来,LCS里的一定是回文的,而其他的一定不会回文,所以必须在相应位置插入那些字符使得他们对称,最后整个串才可以回文

#include <map>    
#include <set>    
#include <list>    
#include <stack>    
#include <queue>    
#include <vector>    
#include <cstdio>    
#include <cmath>    
#include <cstring>    
#include <iostream>    
#include <algorithm>    
    
using namespace std;

char str1[5010];
char str2[5010];
int dp[2][5010];

int main()
{
	int len;
	while (~scanf("%d", &len))
	{
		scanf("%s", str1);
		for (int i = 0; i < len; i++)
		{
			str2[i] = str1[len - i - 1];
		}
		str2[len] = '\0';
		memset (dp, 0, sizeof(dp) );
		for (int i = 1; i <= len; i++)
		{
			for (int j = 1; j <= len; j++)
			{
				if (str1[i - 1] == str2[j - 1])
				{
					dp[i % 2][j] = dp[(i - 1) % 2][j - 1] + 1;
				}
				else
				{
					dp[i % 2][j] = max(dp[(i - 1) % 2][j], dp[i % 2][j - 1]);
				}
			}
		}
		printf("%d\n", len - dp[len % 2][len]);
	}
}


【阿里云大模型高级工程师ACP习题集】2.9 大模型应用生产实践(下篇) 【摘要】这是我精心整理出对应的习题集,里面足足有 30 道题目,从基础概念到深度拓展,全方位覆盖章节重点、难点。不管你是想检验自己的学习成果,还是想针对薄弱环节进行强化训练,它都能完美适配! 阅读详情

相关推荐

浅谈Android MVI架构---大自然的搬运工~~~

浅谈 Android MVI架构

hong_world的博客 2158

POJ 1159 Palindrome

问要将给定字符串变为回文字符串,最少插入多少个字符。 难点在于想清楚“如何转变为回文字符串”,若为回文字符串,则正序逆序完全相同,也就是lcs长度等于字符串长度。 所以如果要求插入字符的数量,就是正序逆序串lcs的长度减去字符串的长度。 还有一个问题是,如果直接这么写空间是不够的。要用到滚动数组。 因为dp是上下状态之间的转移,所以只需要有两个位置,一个保存上一状态,一个用于通过上一状态计算出当前...

CarpeDiem 264

【强化学习】常用算法之一 “A3C”

A3C(Asynchronous Advantage Actor-Critic)算法是一种在强化学习领域中应用广泛的算法,它结合了策略梯度方法和价值函数的学习,用于近似解决马尔可夫决策过程(Markov Decision Process)问题。A3C算法在近年来备受关注,因为它在处理大规模连续动作空间和高维状态空间方面具有出色的性能。A3C算法是一种基于策略梯度的强化学习算法,通过多个并行的智能体异步地与环境交互,并利用Actor和Critic网络实现策略和价值的近似,从而实现快速而稳定的强化学习训练。

Code_and516的博客 6758

POJ 1159 Palindrome(lcs加滚动数组)

lcs算法 加 滚动数组 注释详

笨鸟 1004

Ansys口腔正畸有限元分析:从几何处理到接触设定的全流程解析

本文详细解析了Ansys在口腔正畸有限元分析中的全流程应用,从几何处理到接触设定,帮助医生精准预测牙齿移动趋势。通过有限元建模技术,可同时观察牙齿-牙周膜-牙槽骨的力学响应,显著提升矫治效果预测准确率。文章还分享了实用技巧和参数设置建议,适用于正畸医生和工程师。

weixin_30897233的博客 348

072、LLC谐振变换器的谐振电容选型

文章摘要: 本文深入探讨了LLC谐振变换器中谐振电容的选型要点。作者通过实际案例指出,谐振电容的高频特性(如ESR、ESL)会显著影响LLC性能,导致死区振铃或EMI问题。对比薄膜电容(稳定性好但体积大)和MLCC(体积小但存在直流偏置与温漂缺陷),建议100W以上优先选薄膜电容。强调需关注容值精度、耐压、纹波电流及布局对称性,避免寄生参数引发谐振异常。最后提出验证方法(热成像与波形观测)及选型清单,并分享经验:薄膜电容可靠性更优,MLCC需严格测试,布局时应缩短走线以降低环路辐射。

Jack010169的博客 231

poj 1159 Palindrome(最长公共子串)

大概题意就是求最少添加多少个字符可以把长度为N的字符串编程回文串。 则需要最少需要补充的字母数 = 原序列S的长度 — S和S'的最长公共子串长度 S'为原串的逆串。 关于求最长公共子串, 用到的是动态规划 伪代码如下 if( i ==0 || j == 0 ){ MaxLen(i, j) = 0 //两个空串的最长公共子序列长度当然...

233

【时时三省】tessy 单元测试 之 CTE(The Classification Tree Editor) 的使用

有图有文字详细介绍利用 CTE界面中的树 批量产生用例。

时时三省的博客 838

POJ 1159 Palindrome (动态规划)

Palindrome Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 48269   Accepted: 16570 Description A palindrome is a symmetrical string, that is, a string read ide

Hadis_yuki 1516

uniapp APP端:蓝牙报错writeBLECharacteristicValue:fail property not support(uni.writeBLECharacteristicVal)

uni-app 蓝牙fail property not support、发现不了服务特征值的问题、突然发现微信蓝牙小秘密,使用uni-app编译成安卓APP后报错writeBLECharacteristicValue:fail property not support,发现不了服务特征值,uniApp APP调用蓝牙API发送指令过快导致,uniapp 蓝牙 writeBLECharacteristicValue property_not_support iOS Android BLE GATT 特征值写入

✅ 精选推荐文章 2943

第244篇 视觉SLAM后端之BA优化——Bundle Adjustment的原理

本文介绍了SLAM后端优化中的Bundle Adjustment(BA)技术。BA通过同时优化相机位姿和3D路标点位置,最小化重投影误差,解决前端估计的累积误差问题。文章详细讲解了BA的数学原理,包括目标函数构建、Gauss-Newton法和Levenberg-Marquardt法求解过程,以及利用稀疏性和Schur补加速计算的关键技术。对比了全量BA和增量BA的优缺点,并介绍了Ceres、g2o等工程实现工具。BA作为SLAM后端的核心算法,其理解深度直接影响系统性能优化能力。

郑伟强dev的专栏 352

poj解题报告——1159

做这题的时候网上荡了个公式:最少需要补充的字母数=原序列S的长度—S和S'的最长公共子串长度//其中s'为s的逆序。不要问我为什么,我也不知道是为什么。大神们没说,我还要再想想。 代码如下 #include #include void main() { char a[5005],b[5005]; int c[2][5005]; int n,i,j; scanf("%d",&n);

Lingfu74的专栏 582

智能手环嵌入式系统:STM32+ESP8266多传感器健康监护设计

可穿戴健康监测设备是物联网与边缘计算融合的典型应用,其核心在于多源生理信号采集、低功耗实时处理及安全云协同。基于光电容积脉搏波(PPG)的心率与血氧检测、NTC热敏电阻体温测量、加速度-角速度融合跌倒判据等技术,构成了老年健康监护的基础感知能力;而STM32主控与ESP8266协处理器分工架构,则实现了计算资源与通信负载的高效解耦。该方案依托FreeRTOS多任务调度、阿里云IoT物模型标准化交互及MQTT双向通信,兼顾实时性、可靠性和工程可维护性,广泛适用于居家养老、慢病管理与远程健康预警等场景。

weixin_33256096的博客 99

poj1159 Palindrome

poj1159 Palindrome Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 68871 Accepted: 23964 Description A palindrome is a symmetrical string, that is, a string read identically from left to ...

miracle from life 437

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【动态规划】【poj 1159】palindrome

【动态规划】【poj 1159】palindrome 问题 给定一个长度为n( 分析 设原序列S的逆序列为S',则这道题目的关键在于, 最少需要补充的字母数= 原序列S的长度— S和S'的最长公共子串长度 设 S 为原字符串,RS=reverse(S)即S反转后的字符串,LCS(S,RS)为S与RS的最长公共子序列,len(S)为S的长度。令S={a1~an},则RS={a

pi9nc的专栏 944

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【POJ1159】Palindrome(动态规划)

题面:【POJ1159】Palindrome 这道题是一道较水的DP题。 我们可以用f[i][j]来表示把[i..j]这个区间变成一个回文串所需添加的最少字母数,这样我们就可以轻松地得到状态转移方程: 当s[i]==s[j]时,f[i][j]=min{f[i+1][j-1],f[i+1][j]+1,f[i][j-1]+1};当s[i]!=s[j]时,f[i][j]=min{f[i+1][j]...

CXR的博客 893

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【转】POJ 1159 Palindrome【经典的DP回文问题】

原题链接:http://poj.org/problem?id=1159 博文转载链接: http://blog.sina.com.cn/s/blog_6d79d83a01016iqg.html Palindrome Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 45704

free斩 2802

POJ 1159 Palindrome(字符串变回文:LCS)

POJ 1159 Palindrome(字符串变回文:LCS) http://poj.org/problem?id=1159 题意: 给你一个字符串, 问你做少需要在该字符串中插入几个字符能是的它变成一个回文串. 分析: 首先把原字符串和它的逆串进行匹配, 找出最长公共子序列. 那么最长公共子序列的字符串肯定是一个回文串. 所以原串剩下的部分是不构成回文的. 我们只需要添加剩下部分的字符到对应位置, 原串自然就变成了一个回文. 所以本题的解为: n 减去 (原串与逆

code 1154

POJ1159---Palindrome(dp,LCS)

POJ1159---Palindrome(dp,LCS) 题意理解: 给定一个字符串,问给这个字符串添加多少字符可以使得其为字符串。emmm,其实是个最长公共子序列问题,原序列长度-原序列和逆序列的最长公共子序列就是所求的答案(也就是添加的都是不在最长公共子序列的字符,去平衡一下) 最长公共子序列: 最长公共子序列(LCS) dp[i][j]:字符串s1…si和字符串t1…tj

sgh666666的博客 232

POJ 1159 Palindrome [动态规划+滚动数组]

POJ 1195 Palindrome [动态规划+滚动数组] 写在最前面:吹爆滚动数组!!!!!!!太好用了叭!!!快学它!!! 题目:http://poj.org/problem?id=1159 题目大意:求最少增加几个字符可以使字符串s变成回文串 样例: 输入:5 Ab3bd 输出:2 思路:动态规划 设置状态:f[i][j]的值表示从s[i]到s[j]至少增加几个字符可以使s[i…j]变成...

MMMMMelody的博客 333

POJ-1159 Palindrome (dp+滚动数组节省内存)

题目链接:点击打开链接 题意:     这道题是说 给你一个字符串, 让你求最少添加多少个新字符,可以使该字符串变成回文串。 思路:     本题关键要了解的一点就是, 最少要添加的字符数 = 该字符串的长度 - 该字符串的逆序与该字符串的最长公共子序列。     剩下的就是求最长公共子序列问题了,本来是道很基础的题目,但又有新的问题就是dp[5000][5000]的静态数组占用内存太大

JOKER_SAMA的博客 377

POJ 1159.Palindrome

题目:http://poj.org/problem?id=1159 AC代码(C++): #include #include #include #include #include #include #include #include #include #define INF 0xfffffff #define MAXN 100105 using namespa

njyexiong的博客 269

poj 1159 Palindrome

Palindrome Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 44186   Accepted: 15050 Description A palindrome is a symmetrical string, that is, a string read ide

SCAU_BIN的博客 750
上一篇: POJ2241——The Tower of Babylon
下一篇: hdu5086——Revenge of Segment Tree
tokers
博客等级 码龄12年 71粉丝 700原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值