蓝桥杯 3. 密码脱落

密码脱落

原题目链接

题目描述

X 星球的考古学家发现了一批古代留下来的密码。

这些密码是由 A、B、C、D 四种植物的种子串成的序列。

仔细分析发现,这些密码串当初应该是前后对称的(即镜像串)。

由于年代久远,其中许多种子脱落了,因此有些串可能失去了镜像的特征。

你的任务是:

  • 给定一个现在看到的密码串,
  • 计算出至少脱落多少个种子,才能使得当初的串变成现在的样子。

输入描述

  • 输入一行,表示现在看到的密码串(字符串长度不超过 1000)。

输出描述

  • 输出一个正整数,表示至少脱落了多少个种子。

输入输出样例

示例 1

输入

in 复制代码
ABCBA

输出

out 复制代码
0

示例 2

输入

in 复制代码
ABDCDCBABC

输出

out 复制代码
3

(说明:脱落越少,保持镜像结构越好,求最少脱落的数量。)

c++代码

cpp 复制代码
#include<bits/stdc++.h>

using namespace std;

string a, b;
int n;

int main() {
    cin >> a;
    b = a, reverse(a.begin(), a.end());
    n = a.size();
    vector<int> last(n + 1), now(n + 1);
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            now[j] = a[i - 1] == b[j - 1] ? last[j - 1] + 1 : max(last[j], now[j - 1]);
        }
        last = now;
    }
    cout << n - last[n];
    return 0;
}//by wqs

算法解析

其实就是最长公共子序列问题

求出s和它的反转sr的最长公共子序列,它是一个回文串

需要添加的字符个数就是长度减去这个子序列的长度

用求最长公共子序列的常规方法-动态规划来解

相关推荐
救救孩子把4 小时前
AI面试八股文-21_21-多模态Agent面试题-Vision-Language-Agent
人工智能·面试·职场和发展·llava·多模态agent
HPtiger4 小时前
数据结构——选择排序
数据结构·算法·排序算法
康实训4 小时前
老年评估仿真实训平台架构设计与老年人能力评估实训室教学落地实践
大数据·人工智能·算法·实训室·实训室建设
DongQiShanRen4 小时前
六根硬件映射(四):归属澄清、两处不一致与卷十一总表
开发语言·人工智能·算法·rust·哈希算法·集成学习
CCblandy4 小时前
雪花 ID 四个边界实测:时钟回拨重号 500 个,前端 JSON.parse 直接丢精度
后端·python·算法·性能优化·架构
丑梨数据5 小时前
信创环境里跑文档工具:格式兼容与本地合规的几个坑
数据结构·人工智能·算法·决策树·排序算法
把我格子衫拿来5 小时前
VTK 9.5 与 Qt 6 联合开发:从嵌入三维窗口到可维护的桌面架构
c++·python·qt·vtk·三维可视化
无忧.芙桃5 小时前
C++语言原理与实践(十六):多态机制讲解
开发语言·c++·多态
erzong2316 小时前
Linux操作系统:线程概念与控制
linux·算法
wuminyu7 小时前
JMM学习总结:深入理解happens-before关系
java·linux·c语言·jvm·c++