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

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

相关推荐
一只旭宝5 小时前
【C++入门精讲22】常见设计模式
c++·设计模式
JAVA面经实录9175 小时前
Java 数据结构与算法 (终极完整学习文档)
java·数据结构·算法
c++之路7 小时前
Bazel C++ 构建系列文档(三):构建第一个 C++ 项目
开发语言·c++
开源Z7 小时前
LeetCode 42 · 接雨水:从暴力到双指针的三步优化
算法·leetcode
旖-旎7 小时前
《LeetCode 695 岛屿的最大面积 FloodFill DFS 解法》
c++·算法·力扣·深度优先遍历·floodfill
影视飓风TIM7 小时前
数据结构 | 链表超全笔记(单链表+双链表+高频算法题)
数据结构·笔记·链表
森G7 小时前
61、信号与槽机制在 TCP 编程中的应用---------网络编程
网络·c++·qt·网络协议·tcp/ip
syagain_zsx7 小时前
STL 之 vector 讲练结合
c++·算法
牛油果子哥q8 小时前
STL set与map底层精讲,红黑树适配原理、有序去重特性、迭代器遍历、API实战与面试核心考点全解
开发语言·数据结构·c++·面试