当前位置: 首页 > news >正文

蓝桥杯 3. 密码脱落

密码脱落

原题目链接

题目描述

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

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

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

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

你的任务是:

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

输入描述

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

输出描述

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

输入输出样例

示例 1

输入

ABCBA

输出

0

示例 2

输入

ABDCDCBABC

输出

3

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

c++代码

#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的最长公共子序列,它是一个回文串

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

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


http://www.mrgr.cn/news/100195.html

相关文章:

  • iOS/Android 使用 C++ 跨平台模块时的内存与生命周期管理
  • 施磊老师基于muduo网络库的集群聊天服务器(七)
  • OpenHarmony之电源管理子系统公共事件定义
  • FX10(CYUSB4014)USB3.2(10Gbps)开发笔记分享(1):硬件设计与开发环境搭建
  • CMake ctest
  • 用diffusers库从单文件safetensor加载sdxl模型(离线)
  • 深入解析 Linux 中动静态库的加载机制:从原理到实践
  • 深入解析YOLO v1:实时目标检测的开山之作
  • PCI 总线学习笔记(五)
  • 蜜罐管理和数据收集服务器:Modern Honey Network (MHN)
  • 高效使用DeepSeek对“情境+ 对象 +问题“型课题进行开题!
  • ClickHouse 中`MergeTree` 和 `ReplicatedMergeTree`表引擎区别
  • C++23中if consteval / if not consteval (P1938R3) 详解
  • 图解YOLO(You Only Look Once)目标检测(v1-v5)
  • windows作业job介绍
  • 【音视频】⾳频处理基本概念及⾳频重采样
  • Virtuoso ADE采用Spectre仿真中出现MOS管最小长宽比满足要求依然报错的情况解决方法
  • 解读《数据资产质量评估实施规则》:企业数据资产认证落地的关键指南
  • 语音合成之六端到端TTS模型的演进
  • 第1讲|R语言绘图体系总览(Base、ggplot2、ComplexHeatmap等)