Description du sujet:
Coucou Est 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. Coucou les mains est d'une chaîne, mais il est muet, alors il est venu demander votre aide, demandez combien de fois tourner le minimum requis pour obtenir la chaîne
idées:
À partir d'un nombre peut être transféré à un autre nombre x fois dans un sens ou de y, alors x ≡ y (mod 26), en prenant x, y qui plus petite valeur absolue, à répéter
Résumé:
Notez que le problème peut être abstrait, abstrait au niveau plus simple, mieux
code:
. 1 #include <cstdio> 2 #include <le iostream> 3. #Include <CString> 4. #Include <algorithme> 5. L'aide de l' espace de noms STD; . 6 // pas nécessaire de stocker les lettres . 7 int point = 0 , ANS = 0 , maintenant; . 8 carbonisation T [ 10005 ]; . 9 int () principal 10 { . 11 // valeur absolue du minimum de deux nombres matrice 26 avec le reste 12 est Scanf ( " % S " , T), 13 est int len = strlen (T); 14 pour ( int i = 0 ; i <len; i ++ ) 15 { 16 maintenant = t [i] - ' a ' ; 17 int t1 = abs (maintenant- point); 18 int t2 = abs ( 26 - t1); 19 ans + = min (t1, t2); 20 Point = maintenant; 21 } 22 Cout << ans << endl; 23 }