Este cuco aventura [pensamiento y la práctica de la CSP-M1 Una programación]

Descripción Asunto:

Hay un anillo, extremo conectado al extremo por las letras de la composición alfabeto. Un puntero anillo inicialmente apunta a una. Cada vez que una rejilla gira en sentido horario o antihorario. Por ejemplo: a las agujas del reloj a B, en sentido antihorario para z. Ahora hay una cadena de caracteres, necesita encontrar cuántas veces se puede convertir punto puntero a una cadena de letras.

Formatos de entrada:

Introduzca sólo una línea, que es una cadena.

Ejemplo de entrada:

zeus

Los formatos de salida:

Al menos al número de revoluciones de salida.

Salida de muestra:

18

ideas:

Para realizar el número mínimo de revoluciones, es decir, cada vez que el número de revoluciones de las células llegar a la siguiente letra sea mínima. Por lo tanto, para considerar cada rotación es hacia la derecha o giro a la izquierda puede girar relativamente pequeño número de células.
Conjunto puntero está apuntando a las letras como antes, para llegar a la siguiente letra es el siguiente.
Si la siguiente lexicográficamente más grande que antes, cuando la red del número de revoluciones en sentido horario-siguiente, antes de (en este caso, un ASCII sustracción); si el número de células es en sentido antihorario girada 26-1 + antes-siguiente;
si lexicográficamente siguiente más pequeño que antes, Si la rotación en sentido horario del número de células 26-1 + próxima antes; si el número de células es en sentido antihorario girada antes-próximo;
mediante el estudio de la fórmula anterior y la operación de valor absoluto, una parte de la caja se puede combinar.

código:

#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;
}
Publicado 25 artículos originales · ganado elogios 8 · visitas 539

Supongo que te gusta

Origin blog.csdn.net/weixin_44034698/article/details/104870656
Recomendado
Clasificación