最长问题记录

JAVA动态规划(二)--最长公共子序列问题(LCS_subSequence)的三种解法与最长公共子字符串(LCS_subString)的两种解法与最长回文串(LongestPalindrome) 动态规划法经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题。简单地采用把大问题分解成子问题,并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数增加。为了节约重复求相同子问题的时间,引入一个数组,不管它们是否对最终解有用,把所有子问题的解存于该数组中,这就是动态规划法所采用的基本方法。【问题】 求两字符序列的最长公共字符子序列问题描述:字符序列的子序列是指从给 阅读详情

1、最长回文字符串
例子:如”isabba” 、”abcbaXXab” 这样子的字符串,部分是回文的,求出最长的回文部分。

解法一思路:
穷尽字符串。将字符串拆分成子字符串,然后对子字符串进行回文判断,并记录其长度。

 public static void main(String[] args){
        String str = "isabbaXXab";
        int len = str.length();
        int maxLen = 0;
        String maxStr = "";
        for(int i = 0 ; i < len; i++){
            for(int j = i ; j <= len ; j++){
                if(isParm(str.substring(i,j))){
                    if(j - i > maxLen){
                        maxLen = j - i;
                        maxStr = str.substring(i,j);
                    }
                }

            }
        }
        System.out.println(maxLen);
        System.out.println(maxStr);

    }

    public static boolean isParm(String str){
        int len = str.length();
        for(int i = 0 ; i < len / 2; i++){
            if(str.charAt(i) != str.charAt(len - i - 1)){
                return false;
            }
        }
        return true;
    }

解法二:动态规划【本人是垃圾还没参透,参透了再记录】


2、有删除情况下的最长回文字符串
腾讯2016春招之算法

解题思路:

这个题严格意义上来说,删除了字符就谈不上回文串了,既然有删除,那估计考察的不是回文串,而是其他的,但是这个东西又有回文串的特点,细想一下——那就是不连续的回文串,想到不连续,就容易使人想到最长公共子序列,把源字符串逆序之后对比两个字符串发现:我靠,这不就是求两个序列的最长公共子序列(好像跟回文串没多大关系)。

这里写图片描述
这里写图片描述

考察:回文串,动态规划,知识迁移

int dpLCS[M][M]; //设置成全局变量,自动初始化为0

//动态规划法:最长回文子串,有删除,其实就是求最长公共子序列
int LongestCommonSequence(string str)
{
    size_t n = str.size();
    if (n == 0 || n == 1)
        return 1;

    string s = str;
    reverse(s.begin(), s.end());

    for (size_t i = 1; i <= n; ++ i) {
        for (size_t j = 1; j <= n; ++ j) {
            if (str[i-1] == s[j-1]) 
                dpLCS[i][j] = dpLCS[i-1][j-1] + 1;
            else 
                dpLCS[i][j] = max(dpLCS[i-1][j], dpLCS[i][j-1]); 
        }
    }
    return dpLCS[n][n];
}

本段转自:http://www.cnblogs.com/bakari/p/5358257.html
http://blog.youkuaiyun.com/biangren/article/details/8038605


3、数组内连续升序的最长个数
例子:如{5,3,4,7,2,9},3,4,7便是最长连续升序的。用动态规划来解决很简单。用一个dp[]来记录连续个数,通过比较每一个元素和之前的一个值的大小实现。

 public static void main(String[] args){
     int[] arr = {5,3,4,7,2,9};
     int length = arr.length;
     int[] dp = new int[length];
     dp[0] = 1;
     for(int i = 1; i < length; i++){
         if(arr[i] > arr[i-1]){
             dp[i] = dp[i-1]+1;
         } else {
             dp[i] = 1;
         }
    }
     int max = 0;
     for(int i = 0; i < length; i++){
         if(max < dp[i]){
             max = dp[i];
         }
     }
     System.out.print(max);
 }
5种关于字符串中“最长”问题的解法 (尊重劳动成果,转载请注明出处:http://blog.youkuaiyun.com/qq_25827845/article/details/77725795冷血之心的博客) 常见的5种关于字符串中“最长”问题: 最长公共子序列 最长公共子串 最长递增子序列 最长公共前缀 最长不含重复元素的子串 最长公共子序列 子序列不需要连续,给定两个不同长度的字符串,如何求出最长公共子序列? 递归解法: ... 阅读详情

相关推荐

Android WLAN STA/AP 并发

Android 9 引入了可让设备同时在 STA 和 AP 模式下运行的功能。对于支持双频并发 (DBS) 的设备,此功能让一些新功能得以实现,例如在用户想要启用热点 (softAP) 时不会中断 STA WLAN。

华南烹鱼宴 1247

最长回文子串问题-Manacher算法【建议收藏】

前面我们讲过一个关于字符串的算法:KMP算法。今天我们来讲另外一个字符串算法:Manacher算法。这个算法是用于解决一个问题叫:最长回文子串。 前期文章:KMP算法 牛客网OJ链接 说的简单一点,给定一个字符串,返回的值是这个字符串的最长回文子串的长度。顾名思义,即是回文串,也是子串。 文章目录一、BF算法二、Manacher算法 一、BF算法 那上图的示例2为例:abc1234321ab。 最简单的思路就是从左到右遍历每一个字符。每来到一个字符位置,我们可以向左右两边进行扩展,分别比较左右两边的字符。

x0919的博客 1004

Score Matching(得分匹配)

Score Matching(得分匹配)是一种统计学习方法,用于估计概率密度函数的梯度(即得分函数),而无需知道密度函数的归一化常数。这种方法由Hyvärinen在2005年提出,主要用于无监督学习,特别是在密度估计和生成模型中。

weixin_39699362的博客 2167

最长平台问题

最长平台问题 解答

FlowerSaiGao的博客 586

多路输出电源的交叉调整率:从理论到无源优化实践

本文深入探讨了多路输出电源中的交叉调整率问题,分析了其物理根源及无源优化方法。通过漏感与耦合的理论分析,结合加权反馈、电感耦合等五种无源优化技术,帮助工程师有效解决交叉调整率挑战。文章还以TDK-Lambda CUT75系列为例,展示了优化技术的实际应用与效果。

weixin_26886855的博客 280

基于 Quest 摄像头数据开发的原理介绍【Unity Meta Quest MR 开发教程】

比如想在识别到的现实物体上叠加虚拟物体,需要知道这个现实物体在 Unity 的世界坐标下的哪个位置,是带有 x,y,z 三个轴的数据的。而 WebCamTexture 捕捉到的图像只是个 2D 的平面,没有三维世界的深度信息,我们通过物体识别算法识别到的物体坐标只是在这个 2D 平面上的一个屏幕坐标,可以理解为 Quest 拍摄了一张照片,我们识别到这张照片上的某个像素点为需要识别的现实物体的中心。是不是看起来比较复杂?Quest 的相机访问功能是在安卓的。

qq_46044366的博客 2104

lcs最长公共子序列问题记录路径 动态规划dp 51nod教程

题目来源:https://www.51nod.com/tutorial/course.html#!courseId=4 给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的)。 比如两个串为: abcicba abdkscab ab是两个串的子序列,abc也是,abca也是,其中abca是这两个字符串最长的子序列。

雪的期许 1996

用VFP计算 CRC-16 Modbus 校验位

1. Modbus是一种串行通信协议,最初由Modicon(目前属于施耐德电气公司)于1979年开发2. Modbus协议是应用在Modicon产品上的,后来才被移植到其他产品上3. Modbus协议的通信接口可以有多种选择,如RS232、RS485、以太网等。

lddnzx的博客 518

力扣解题思路:最长回文子序列/最长回文子串/数组拷贝问题 纠错记录

516. 最长回文子序列 思路: 这一题思路比较巧妙,记录一下。设dp[i][j]表示s[i:j]中的最长回文子序列长度,则 (1) s[i] == s[j] ==> dp[i][j] = dp[i+1][j-1] + 2; (2) s[i] != s[j] ==> dp[i][j] = max(dp[i+1][j], dp[i][j-1]) 初始化: dp[i][i] = 1 由i,j的更新方式知道i应该逆序,j应该正序,且j应该比i大: for (int i = n - 1; i >=

qq_39879315的博客 209

技术指南| 叶绿体基因组高级分析全流程解析

本文详细解析了叶绿体基因组高级分析的全流程,包括实验设计、序列组装与注释、比较基因组分析、选择压力与功能进化等关键步骤。通过实战案例和技术技巧,帮助研究者掌握叶绿体基因组分析的核心方法,提升植物进化研究和系统学分析的效率与准确性。

weixin_33725239的博客 491

【深度学习新浪潮】为什么OpenClaw这么吃token?

OpenClaw 高 Token 消耗的核心是 Agent 多轮思考、工具调用上下文累积,以及平台内置的模板/多模型协同开销;PD 分离在 OpenClaw 中可针对性解决长上下文 Prefill 阻塞、KV Cache 复用低效问题,是提升其推理效率的核心优化手段,主要落地在长上下文处理与生成阶段解耦、KV Cache 集中管理、动态资源调度三个方向。

专注:太空算力、AI infra、异构调度、大模型成本工程 419

记录---最长公共子序列问题(动态规划)

import java.util.Scanner; /** * 最⻓公共⼦序列长度 * */ public class DP6 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str1 = sc.next(); String str2 = sc.next(); DP6 dp6 = new DP6(); .

qq_37021992的博客 208

小程序跳转链接实战:https://wxaurl.cn/、weixin://dl/business/ 跳转与明文 URL Scheme 生成指南

本文聚焦小程序跳转链接开发核心技术,深入解析 https://wxaurl.cn/*TICKET* 与 weixin://dl/business/?t= *TICKET* 两种链接的生成方法。详细阐述生成前的准备工作、服务端接口调用步骤及注意事项,同时剖析 iOS 与 Android 系统在链接适配方面的差异。此外,针对明文 URL Scheme 获取,从平台设置、拼接规则、使用限制等方面展开讲解,并结合实际应用案例提出优化建议,帮助开发者快速掌握小程序跳转链接生成与明文URL Scheme获取的关键技术。

邓邓子的博客 2万+

【最长递增子序列】动态规划

问题描述: 输入一组乱序的数据,输出这组数据的最长的递增序列,如输入X[ ] = (2 8 9 4 6 1 3 7 5 10),则输出(2 4 6 7 10) 求解最长递增子序列的问题,我们考虑用动态规划,而动态规划,我们就得弄清楚子问题,最终的解决办法如下: 1.在遍历数据的过程中,记录下排第几的数是哪一位,用L[ ]数组来记录,用len来表示当前的最高位的位数; 2.遍历遇到比最高位还大的数X...

qq_43764726的博客 337

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

代码随想录算法训练营第五十二天| LeetCode300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组

代码随想录算法训练营第五十二天| LeetCode300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组

qq_44144025的博客 166

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

DAG上的最长路

最长路问题分为两种: 1.求整个DAG上的最长路(不固定起点和终点) 2.固定终点 ,求DAG上的最长路 首先看第一种,用dp[i]来代表从i结点出发能到达的最长路长度。i结点可以到达j1,j2,j3…….jk结点,则dp[i]=max(dp[i],map[i,j]+dp[j]),(j=j1,j2,j3…..jk)map[i][j]代表i,j两结点间的长度。如何用代码来实现啦。 int D...

rainysky7的博客 1046

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

最长公共子序列

对于两个字符串,求取最长公共子序列 package practice2; import java.util.*; /* * 最长公共子序列 */ public class LargestSubSequence { public static void main(String[] args) { Scanner input = new Scanner(System.in); l

jiexiao1413的博客 228

动态规划 最长公共子序列

//头文件 //LCSLength //X[] 为X序列  Y[] 为Y序列 //c[i][j]存储Xi,Yj的最长公共子序列的长度 //b[i][j]记录c[i][j]的值是由哪一个子问题的截得到的 //c[i][j]= | 0;    (i=0,j=0;) //c[i][j]= | c[i-1][j-1]; (x[i]=y[j])  b[i][j]=1 //c[i][j]= |

johnsenxu的专栏 284

跟着编程之美学算法——最长公共子序列

最长公共子序列是一个很经典的动态规划问题,最近正在学习动态规划,所以拿来这里再整理一下。 这个问题在《算法导论》中作为讲动态规划算法的例题出现。 动态规划,众所周知,第一步就是找子问题,也就是把一个大的问题分解成子问题。这里我们设两个字符串A、B,A = "a0, a1, a2, ..., am-1",B = "b0, b1, b2, ..., bn-1"。 (1)如果am-...

dizhi5320的博客 72

2022/5/20蓝桥杯刷题记录迷宫-最长公共子序列-背包问题-找零问题

记录一下今天的杂事吧 啊啊啊,今天去博士生自习室自习被发现了,有点小尴尬啊,不过,我是去看书的,读书人的事 今天下午打了差不多2个小时乒乓球,有点爽,因为自己抽球的水平有点进步了 昨天冲动了,手冲了一波,几天有点背痛,希望自己能够克服一下 打算明天去买一个插座,不然自己总是搬来搬去 今天晚上就稍微休息一下,把这个日记记完,就去读一会英语,然后休息了 以后要在题目中记录下今天学到的知识点 蓝桥杯刷题进步 1.今天把那个迷宫的给完成了,倒是学到了一些知识点,主要是就是需要分情况讨论,然后用递归 2.今天也

qq_56755264的博客 244

力扣记录:动态规划5子序列问题(1)——300 最长上升子序列,1143 最长公共子序列,1035 不相交的线,674 最长连续递增序列,718 最长重复子数组,53 最大子序和

力扣记录:动态规划5子序列问题(1)——300 最长上升子序列,1143 最长公共子序列,1035 不相交的线,674 最长连续递增序列,718 最长重复子数组,53 最大子序和

Kiwi_fruit的博客 362

最长单调子序列

简单来说:n个老鼠的体重和速度,求找出一个最长的子序列,这个子序列随着体重递增伴随速度递减 动态规划思路:dp[i] = max(dp[j]+1)基础DP问题最长上升子序列的一个小变形,我这里采用先按照重量递减排序后算最长速度下降的长度的做法。难点在于如何输出老鼠们的编号,也就是记录路径,智障的我想了半天,尝试结构体和二维数组储存都没有成功,后来在调试看输出时突然发现每只老鼠充当序列最大速度时对应...

qq_45762392的博客 221

leetcode 354. 俄罗斯套娃信封问题(最长上升子序列模板 仅此记录一下nlogn的方法而已)

题目 class Solution { public: int maxEnvelopes(vector<vector<int>>& a) { int n=a.size(),*d=new int[n+1]; if(!n) return 0; sort(a.begin(),a.end(),[](const vector<int>& A,const vector<int>& B){

m0_43602209的博客 171
上一篇: 实现一堆栈,要求三个操作,Pop,Push,GetMaxValue,时间均为O(1)
下一篇: centos
sipherhern
博客等级 码龄11年 2粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值