Palindromic Subsequence(最长回文字符串 输出路径)

2024-08-28 06:48

本文主要是介绍Palindromic Subsequence(最长回文字符串 输出路径),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

初看好简单   一开始调试着一直re   后来也不知道怎么就对了  但是还有一些bug存在   ,

这道题的打印路径和light oj An Easy LCS(ps:点击打开链接)一样

但是只改一下会Tle  因为(1000*1000*1000)好大

但是把存储的字符串改为string 定义的就过了

但是还是有一点有点难受(下面会说出)

我也是醉了

#include <stdio.h>
#include <string.h>
#include <string>
#include <iostream>
using namespace std;
#define maxx 1010
char s1[maxx];
char s2[maxx];
int dp[maxx][maxx];
string s[maxx][maxx];
int main()
{while(scanf("%s",s1+1)!=EOF){memset(dp,0,sizeof(dp));int k;int n=strlen (s1+1);for(int i=1;i<=n;i++)s2[i]=s1[n-i+1];for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){if(s1[i]==s2[j]){dp[i][j]=dp[i-1][j-1]+1;s[i][j]=s1[i]+s[i-1][j-1]+s2[j];}else{if(dp[i-1][j]>dp[i][j-1]){dp[i][j]=dp[i-1][j];s[i][j]=s[i-1][j];}else if(dp[i][j-1]>dp[i-1][j]){dp[i][j]=dp[i][j-1];s[i][j]=s[i][j-1];}else{dp[i][j]=dp[i-1][j];if(s[i-1][j]>s[i][j-1])s[i][j]=s[i][j-1];elses[i][j]=s[i-1][j];}}}string s3= s[n][n];//怎么也没有想到string定义的是这样输出的int l = dp[n][n];if(l & 1) {for(int i=0; i<(l-1)/2; i++)cout << s3[i];for(int i=(l-1)/2; i>=0; i--)cout << s3[i];}else {for(int i=0; i<l/2; i++)cout << s3[i];for(int i=l/2-1; i>=0; i--)cout << s3[i];}cout << endl;}}


这篇关于Palindromic Subsequence(最长回文字符串 输出路径)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1114037

相关文章

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

关于最长递增子序列问题概述

《关于最长递增子序列问题概述》本文详细介绍了最长递增子序列问题的定义及两种优化解法:贪心+二分查找和动态规划+状态压缩,贪心+二分查找时间复杂度为O(nlogn),通过维护一个有序的“尾巴”数组来高效... 一、最长递增子序列问题概述1. 问题定义给定一个整数序列,例如 nums = [10, 9, 2

C#从XmlDocument提取完整字符串的方法

《C#从XmlDocument提取完整字符串的方法》文章介绍了两种生成格式化XML字符串的方法,方法一使用`XmlDocument`的`OuterXml`属性,但输出的XML字符串不带格式,可读性差,... 方法1:通过XMLDocument的OuterXml属性,见XmlDocument类该方法获得的xm

使用TomCat,service输出台出现乱码的解决

《使用TomCat,service输出台出现乱码的解决》本文介绍了解决Tomcat服务输出台中文乱码问题的两种方法,第一种方法是修改`logging.properties`文件中的`prefix`和`... 目录使用TomCat,service输出台出现乱码问题1解决方案问题2解决方案总结使用TomCat,

JSON字符串转成java的Map对象详细步骤

《JSON字符串转成java的Map对象详细步骤》:本文主要介绍如何将JSON字符串转换为Java对象的步骤,包括定义Element类、使用Jackson库解析JSON和添加依赖,文中通过代码介绍... 目录步骤 1: 定义 Element 类步骤 2: 使用 Jackson 库解析 jsON步骤 3: 添

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

Python使用Colorama库美化终端输出的操作示例

《Python使用Colorama库美化终端输出的操作示例》在开发命令行工具或调试程序时,我们可能会希望通过颜色来区分重要信息,比如警告、错误、提示等,而Colorama是一个简单易用的Python库... 目录python Colorama 库详解:终端输出美化的神器1. Colorama 是什么?2.