蓝桥 密码脱落 (菜到哭)

简介: 蓝桥 密码脱落 (菜到哭)

题目描述
X星球的考古学家发现了一批古代留下来的密码。
这些密码是由A、B、C、D 四种植物的种子串成的序列。
仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串)。
由于年代久远,其中许多种子脱落了,因而可能会失去镜像的特征。

你的任务是:
给定一个现在看到的密码串,计算一下从当初的状态,它要至少脱落多少个种子,才可能会变成现在的样子
输入
输入一行,表示现在看到的密码串(长度不大于1000)
输出
要求输出一个正整数,表示至少脱落了多少个种子。
样例输入
ABCBA
样例输出
0

一开始想的是从前后向中间找,找到一个不一样的就加1,但是不行。
比如说CABDAC,如果按照上面这种方法结果是2,而实际上最少结果是1.

看了zmgg的博客,求正反两个的最长公共子序列,然后补上n-len个字母就可以了。

这里主要记录一下scanf的%s还可以str+1这么用,以及strlen也可以这么用,长见识了。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

char str1[1005], str2[1005];
int dp[1005][1005];
int main(){
   
    scanf("%s", str1+1);
    strcpy(str2, str1);
    int len=strlen(str1+1);
    for (int i=1; i<=len; i++)
        str2[i]=str1[len-i+1];
    for (int i=1; i<=len; i++){
   
        for (int j=1; j<=len; j++){
   
            if (str1[i]==str2[j]){
   
                dp[i][j]=dp[i-1][j-1]+1;
            }else{
   
                dp[i][j]=max(dp[i-1][j], dp[i][j-1]);
            }
        }
    }
    printf("%d\n", len-dp[len][len]);
    return 0;
}
相关文章
|
C语言
【蓝桥杯刷题】盗版Huybery系列之手抓饼赛马
【蓝桥杯刷题】盗版Huybery系列之手抓饼赛马
105 0
|
Cloud Native 前端开发 Go
【刷题日记】804. 唯一摩尔斯密码词
本次刷题日记的第 29 篇,力扣题为:804. 唯一摩尔斯密码词 ,简单
|
机器学习/深度学习 算法
种类并查集(蓝桥侦探)
种类并查集(蓝桥侦探)
|
数据安全/隐私保护
804. 唯一摩尔斯密码词 : 简单模拟题
804. 唯一摩尔斯密码词 : 简单模拟题
|
Linux Windows
唉,被坑惨了!
32 位系统,用户态的虚拟空间只有 3G,如果创建线程时分配的栈空间是 10M,那么一个进程最多只能创建 300 个左右的线程。 64 位系统,用户态的虚拟空间大到有 128T,理论上不会受虚拟内存大小的限制,而会受系统的参数或性能限制。
唉,被坑惨了!
A计划救公主
可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验。魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主的肉也能长生不老。年迈的国王正是心急如焚,告招天下勇士来拯救公主。不过公主早已习以为常,她深信智勇的骑士LJ肯定能将她救出。
187 0
|
数据安全/隐私保护
「唯一摩尔斯密码词」| leetcode 刷题011
题目 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: "a" 对应 ".-", "b" 对应 "-...", "c" 对应 "-.-.", 等等。
952 0