Concurrence1: Coucou aventure Est

Titre Contenu
coucous East est un enfant enjoué, un jour, il a obtenu un anneau magique des ruines antiques. Cet anneau d'un alphabet composé de bout en bout des anneaux, un pointeur annulaire initialement pointe vers la lettre a . Coucou Est chacun peut tourner dans le sens horaire ou antihoraire d' un espace. Par exemple, une rotation dans le sens horaire à z, rotation de sens anti - horaire à b. mains Coucou Est d'une chaîne, mais il est muet, alors il est venu demander votre aide, demandez combien de fois nécessite un minimum de tour.
Insérer ici l'image Description

Format d'entrée
Entrez une seule ligne, il est une chaîne.

Format de sortie
comptage de sortie à un tour minimum.

Exemple de saisie

Zeus

Exemple de sortie

18

idées de résolution de problèmes
Cette question peut effectivement être beaucoup d'idées, mais pas difficile.
Je choisis de diriger chaque lettre d'autres lettres de pré - traitement, sont combinés dans un tableau de second ordre, utiliser le temps d' en extraire comme.

#include<iostream>
#include<string>
#include<cstring>

using namespace std;

string input;

//A B C D E F G
//H I J K L M N=13[12]
//O P Q   R S T
//U V W   X Y Z
int dis[26][26];

int CtoI(char letter)
{
	int out;
	if(letter>='A'&&letter<='Z')
	{
		out=letter-'A';
		return out;
	}
	if(letter>='a'&&letter<='z')
	{
		out=letter-'a';
		return out;
	}
}

int main()
{
    memset(dis,0,sizeof(dis));
	
	int t;
	for(int l=0;l<=25;l++)
	{
		t=0;
		for(int i=l;i<=25;i++)
		{
			dis[l][i]=t;
			dis[i][l]=t;
			if(i<13+l)
			{
				t++;
			}
			else
			{
				t--;
			}
		}
	}

	cin>>input;
	
	int ans=0;
	
	int last=0;
	int now=0;
	for(int i=0;i<input.length();i++)
	{
		now=CtoI(input[i]);
		ans+=dis[last][now];
		last=now;
	}
	
	cout<<ans;
	
	
	return 0;
}
Publié 21 articles originaux · a gagné les éloges 3 · Vues 413

Je suppose que tu aimes

Origine blog.csdn.net/qq_44506233/article/details/104981905
conseillé
Classement