题目2268:蓝桥杯2016年第七届真题-密码脱落

代码思路

代码采用的是**最长公共子序列(LCS)**的思路:

  1. 将原字符串反转得到新字符串

  2. 求原字符串和反转字符串的最长公共子序列长度

  3. 答案 = 原字符串长度 - 最长公共子序列长度

#include<iostream>

#include<string>

#include<cstring>

#include<algorithm>

using namespace std;

int dp[1002][1002];//表示s的前i个字符和r的前j个字符的LCS长度

string s;//原始字符串

char r[1002];//存放反转后的字符串

int k;

int main(){

cin>>s;

//将原始字符串反转,存放到r数组

for(int i=s.length()-1;i>=0;i--){

r[k++]=s[i];

}

//求最长公共子序列

for(int i=1;i<=s.length();i++){//i遍历原字符串每个字符

for(int j=1;j<=strlen(r);j++){//j遍历反转后的字符串

if(s[i-1]==r[j-1]){

dp[i][j]=dp[i-1][j-1]+1;

}else{

dp[i][j]=max(dp[i-1][j],dp[i][j-1]);

}

}

}

cout<<s.length()-dp[s.length()][strlen(r)]<<endl;

return 0;

}

相关推荐
我能坚持多久1 小时前
【初阶数据结构09】——对堆用法的深入刨析
数据结构·算法
Yvonne爱编码1 小时前
二叉树高频题精讲 | 从入门到熟练掌握二叉树操作
java·开发语言·数据结构·链表·二叉树
kaikaile19951 小时前
基于PCNN和NSCT的图像融合MATLAB实现
开发语言·图像处理·算法·matlab
Zik----1 小时前
cs研究生面试机试题(持续更新)
算法
山栀shanzhi1 小时前
C++ 核心机制解析:#pragma once 与 extern 的具体职责与区别
开发语言·c++·面试
1231566801 小时前
PAT 1017 A除以B
c语言·数据结构·算法·pat考试
芯片-嵌入式2 小时前
具身智能(2):OpenExplorer下的模型量化
人工智能·深度学习·算法
voltina2 小时前
一致性哈希+虚拟节点
数据结构
Yusei_05232 小时前
C++14入门
c++·算法