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

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

相关推荐
喵手4 分钟前
Python爬虫实战:电商实体消歧完整实战 - 从混乱店铺名到标准化知识库的工程化实现,一文带你搞定!
爬虫·python·算法·爬虫实战·零基础python爬虫教学·同名实体消除·从混乱店铺名到标准化知识库
C语言小火车7 分钟前
Qt样式实现方式详解:六大方法全面解析
c语言·c++·qt·学习
weixin_452159557 分钟前
C++与Java性能对比
开发语言·c++·算法
80530单词突击赢8 分钟前
C++哈希表实现:开散列与闭散列详解
算法·哈希算法·散列表
Timmylyx051811 分钟前
类欧几里得学习笔记
笔记·学习·算法
会叫的恐龙11 分钟前
C++ 核心知识点汇总(第一日)(输入输出与变量、类型转换)
开发语言·c++
wangluoqi13 分钟前
26.2.2练习总结
算法
2301_7657031415 分钟前
C++中的工厂模式实战
开发语言·c++·算法
退休钓鱼选手30 分钟前
[CommonAPI + vsomeip]通信 客户端 5
c++·人工智能·自动驾驶
what丶k1 小时前
深度解析:以Kafka为例,消息队列消费幂等性的实现方案与生产实践
java·数据结构·kafka