[Programmation pensée et la pratique du CSP-M1 A] Est aventure coucous

Description du sujet:

Il y a un anneau, extrémité reliée à la fin par les lettres de la composition de l'alphabet. Un pointeur annulaire pointant initialement à un. Chaque fois qu'une grille en rotation dans le sens horaire ou anti-horaire. Par exemple: le sens horaire à b, dans le sens antihoraire à z. Maintenant, il y a une chaîne de caractères, a besoin de trouver combien de fois peut se transformer point de pointeur sur une chaîne de lettres.

Formats d'entrée:

Entrez une seule ligne, il est une chaîne.

Entrée de l'échantillon:

zeus

formats de sortie:

Au moins pour le nombre de tours de sortie.

Sortie de l'échantillon:

18

idées:

Pour le nombre minimum de tours, à savoir, chaque fois que le nombre de tours de cellules atteignent la lettre suivante à être minimale. Par conséquent, pour considérer chaque rotation dans le sens horaire ou anti - horaire rotation peut tourner nombre relativement faible de cellules.
Déplace le pointeur pointe actuellement lettres comme avant, pour se rendre à la lettre suivante est la suivante.
Si le prochain lexicographiquement plus grand que précédemment, lorsque la grille du nombre de tours dans le sens horaire de la prochaine avant (ici, un ASCII de soustraction), si le nombre de cellules est dans le sens antihoraire rotation 26-1 + avant-next;
si lexicographiquement prochaine plus petite que précédemment, Si la rotation dans le sens horaire du nombre de cellules 26-1 + next-avant, si le nombre de cellules est tourné dans le sens antihoraire avant-next;
en étudiant la formule ci - dessus et l'opération de valeur absolue, une partie du boîtier peut être combiné.

code:

#include <iostream>
#include <string>
#include<cmath>
using namespace std;

int main(int argc, char** argv) {
 string str;
 int temp=0,count=0,c[3];
 cin>>str;
 for(int i=0;i<str.size();i++)
 {
  int a=str[i]-'a';
  c[0]=abs(a-temp);
  c[1]=abs(26+a-temp);
  c[2]=abs(26-a+temp);
  int min=0;
  for(int i=1;i<3;i++)
   if(c[i]<c[min])
    min=i;
  count+=c[min];
  temp=a;
 }
 cout<<count<<endl;
 return 0;
}
Publié 25 articles originaux · louange gagné 8 · vues 539

Je suppose que tu aimes

Origine blog.csdn.net/weixin_44034698/article/details/104870656
conseillé
Classement