zoukankan      html  css  js  c++  java
  • Week4 CSP A 咕咕东的奇遇

    题意:

    一个圆环包含26个英文字母,顺时针从a到z排列,有一个指针指向a,每次可以顺时针或逆时针旋转一格。如a顺时针旋转到z,逆时针旋转到b。现在有一个字符串(长度<=10000),请输出要得到这个字符串最少需要旋转的次数。


    思路:

    每次要旋转时,计算前一个字符到后一个字符需要旋转多少次。若字符a>=字符b,则两者旋转次数为a-b与26-(a-b)中较小的那一个。

    Code 

     1 #include<iostream>
     2 #include<string>
     3 using namespace std;
     4 
     5 int main(){
     6     string str;
     7     int sum=0;
     8     cin>>str;
     9     sum=str[0]-'a';
    10     
    11     if(sum>13)
    12        sum=26-sum;
    13     for(int i=0;i<str.length()-1;i++){
    14         int nums=str[i]-str[i+1];
    15         if(nums<0)
    16            nums=-nums;
    17         if(nums>12)
    18             nums=26-nums;
    19         sum+=nums;
    20     }
    21     
    22     cout<<sum<<endl;
    23     return 0;
    24 }     /*
    25         a--z    1
    26         z--e    5
    27         e--u    10
    28         u  s     2 
    29         */  
    流转星云
  • 相关阅读:
    素数个数(素数➕dfs)
    最小正子段和
    set<int> 的用法
    C
    map的用法
    B
    威佐夫博弈
    Stars(树状数组)
    upper_bound和lower_bound的用法
    超级大水题(还是自己过不了的水题)
  • 原文地址:https://www.cnblogs.com/liuzhuan-xingyun/p/12529477.html
Copyright © 2011-2022 走看看