蓝桥杯 3. 密码脱落

密码脱落

原题目链接

题目描述

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

这些密码是由 ABCD 四种植物的种子串成的序列。

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

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

你的任务是:

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

输入描述

  • 输入一行,表示现在看到的密码串(字符串长度不超过 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的最长公共子序列,它是一个回文串

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

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

相关推荐
漂流瓶jz3 分钟前
UVA-1152 和为0的4个值 题解答案代码 算法竞赛入门经典第二版
数据结构·算法·二分查找·题解·aoapc·算法竞赛入门经典·uva
leoufung11 分钟前
LeetCode 76:Minimum Window Substring 题解与滑动窗口思维详解
算法·leetcode·职场和发展
小O的算法实验室24 分钟前
2026年IEEE TETCI,山区环境下基于双种群进化的协同无人机巡逻任务协同优化,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
A7bert77733 分钟前
【YOLOv8pose部署至RDK X5】模型训练→转换bin→Sunrise 5部署
c++·python·深度学习·yolo·目标检测
生成论实验室1 小时前
《事件关系阴阳博弈动力学:识势应势之道》第二篇:阴阳博弈——认知的动力学基础
数据结构·人工智能·科技·神经网络·算法
li1670902701 小时前
第二十七章:智能指针
c语言·数据结构·c++·visual studio
风筝在晴天搁浅1 小时前
字节高频题 小于n的最大数
算法
LabVIEW开发1 小时前
LabVIEW水力机组空蚀在线监测
算法·labview·labview知识·labview功能·labview程序
AI科技星1 小时前
科幻艺术书本封面:《全域数学》第一部·数术本源 第三卷 代数原本(P95-141)完整五级目录【乖乖数学】
算法·机器学习·数学建模·数据挖掘·量子计算
风筝在晴天搁浅1 小时前
LeetCode 92.反转链表Ⅱ
算法·leetcode·链表