zoukankan      html  css  js  c++  java
  • Week4 CSP-M1 A

    题目描述:

    咕咕东是个贪玩的孩子,有一天,他从上古遗迹中得到了一个神奇的圆环。这个圆环由字母表组成首尾相接的环,环上有一个指针,最初指向字母a。咕咕东每次可以顺时针或者逆时针旋转一格。例如,a顺时针旋转到z,逆时针旋转到b。咕咕东手里有一个字符串,但是他太笨了,所以他来请求你的帮助,问最少需要转多少次才能得到这个字符串

    思路:

    从一个数转到另一个数可以顺时针转x次,或逆时针转y次,则x ≡ y(mod 26),取x,y中绝对值小的那个,如此重复即可

    总结:

    注意问题抽象即可,抽象到越简单的层面越好

    代码:

     1 #include <cstdio>
     2 #include <iostream>
     3 #include <cstring>
     4 #include <algorithm>
     5 using namespace std;
     6 //没有必要存储字母
     7 int point=0,ans=0,now;
     8 char t[10005];
     9 int main()
    10 {
    11     //模26同余的两个数的绝对值的最小 
    12     scanf("%s",t);
    13     int len=strlen(t); 
    14     for(int i=0;i<len;i++)
    15     {
    16         now=t[i]-'a';
    17         int t1=abs(now-point);
    18         int t2=abs(26-t1);
    19         ans+=min(t1,t2);
    20         point=now;
    21     }
    22     cout<<ans<<endl;
    23 }
  • 相关阅读:
    金融系列10《发卡行脚本》
    金融系列9《发卡行认证》
    金融系列8《应用密文产生》
    ED/EP系列5《消费指令》
    ED/EP系列4《圈存指令》
    ED/EP系列2《文件结构》
    ED/EP系列1《简介》
    社保系列11《ATR》
    社保系列3《文件结构》
    社保系列2《文件系统》
  • 原文地址:https://www.cnblogs.com/qingoba/p/12511073.html
Copyright © 2011-2022 走看看