密码脱落(最长回文子序列)

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

int f[1005][1005];
int main() {
    string s;cin>>s;
    int n=s.size();
    for(int i=0;i<n;i++){
    	f[i][i]=1;
	}
	for(int i=n-2;i>=0;i--){ // 从倒数第二个字符开始
		for(int j=i+1;j<n;j++){ // 到字符串末尾
			if(s[i]==s[j]){ // 如果两端字符相同,则回文子序列长度是中间部分+2
				f[i][j]=f[i+1][j-1]+2;
			} else{ // 如果两端字符不同,则取去掉左端或去掉右端的最大值
				f[i][j] =max(f[i+1][j],f[i][j-1]);
			}
		}
	}
	cout<<n-f[0][n-1];
    
    return 0;
}

f[i][j] 表示子串 s[i..j] 的最长回文子序列长度

相关推荐
UIUI1 天前
list_for_each_entry
linux·数据结构·链表
hetao17338371 天前
2026-01-06 hetao1733837 的刷题笔记
c++·笔记·算法
-西门吹雪1 天前
c++线程之std::async浅析
java·jvm·c++
a努力。1 天前
国家电网Java面试被问:最小生成树的Kruskal和Prim算法
java·后端·算法·postgresql·面试·linq
王燕龙(大卫)1 天前
fastdds:DataWriter和DataReader匹配规则
c++
洛生&1 天前
Counting Towers
算法
CSDN_RTKLIB1 天前
CMake几个命令顺序
c++
Evand J1 天前
【MATLAB例程,附代码下载链接】基于累积概率的三维轨迹,概率计算与定位,由轨迹匹配和滤波带来高精度位置,带测试结果演示
开发语言·算法·matlab·csdn·轨迹匹配·候选轨迹·完整代码
X在敲AI代码1 天前
LeetCode 基础刷题D2
算法·leetcode·职场和发展
源代码•宸1 天前
Leetcode—1929. 数组串联&&Q1. 数组串联【简单】
经验分享·后端·算法·leetcode·go