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

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] 的最长回文子序列长度

相关推荐
Nuanyt7 分钟前
LeetCode Hot 100 链表专题(四)· 3 题(Java)
java·算法·leetcode·链表·双指针
灯澜忆梦10 分钟前
LeetCode 1861. 旋转盒子|Go 双指针解法
算法
软件派1 小时前
生产动态数据智能风控:阈值判别、趋势预测、异常识别算法工程落地实战
前端·数据库·算法
悠仁さん8 小时前
【C++】AVL 树
c++
wuminyu8 小时前
JVM规范学习总结:解释器与JIT编译器如何处理JVM字节码
java·linux·c语言·jvm·c++
小徐不徐说9 小时前
序列化与反序列化:把 C++ 对象可靠地保存下来
开发语言·数据库·c++·php
ZhengEnCi9 小时前
模型训练完整流程:从数据准备到模型上线的 10 个关键步骤(全文可跑)
后端·算法
ragnwang9 小时前
Notes: Python pybind11 import C++ module
开发语言·c++·python
充值内卷10 小时前
我给桌面加了个鱼缸:C++ 写后端,WebView2 里养一座 Three.js 小岛
开发语言·javascript·c++