zoukankan      html  css  js  c++  java
  • 2016蓝桥杯省赛C/C++A组第九题 密码脱落

    题意:

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

    你的任务是: 给定一个现在看到的密码串,计算一下从当初的状态,它要至少脱落多少个种子,才可能会变成现在的样子。

    输入一行,表示现在看到的密码串(长度不大于1000) 
    要求输出一个正整数,表示至少脱落了多少个种子。

    例如,输入: 
    ABCBA 
    则程序应该输出: 

    再例如,输入: 
    ABECDCBABC 
    则程序应该输出: 
    3

    分析:贪心。

    #include<bits/stdc++.h>
    using namespace std;
    const int MAXN = 1000 + 10;
    char s[MAXN];
    int main(){
        scanf("%s", s);
        int len = strlen(s);
        int i = 0, j = len - 1;
        int ans = 0;
        while(i <= j){
            if(s[i] == s[j]){
                ++i;
                --j;
            }
            else{
                int ti = i;
                while(ti < j && s[ti] != s[j]){
                    ++ti;
                }
                int tj = j;
                while(tj >= i && s[tj] != s[i]){
                    --tj;
                }
                if(abs(ti - i) < abs(tj - j)){
                    ans += abs(ti - i);
                    i = ti;
                }
                else{
                    ans += abs(tj - j);
                    j = tj;
                }
            }
        }
        printf("%d
    ", ans);
        return 0;
    }
    

      

  • 相关阅读:
    android笔记:ListView及ArrayAdapter
    android示例:一个简单的登陆程序
    Android笔记:RelativeLayout
    Android笔记:ContextMenu
    java swing示例
    java多线程与并发笔记
    java常用代码
    java学习笔记整理
    Android笔记:intent
    Android笔记:Button
  • 原文地址:https://www.cnblogs.com/tyty-Somnuspoppy/p/6680339.html
Copyright © 2011-2022 走看看