CSP第一次模拟 A 咕咕东的奇遇

2023-05-16

题目描述:

有一个圆环,由字母表中字母首尾相接组成。环上有一个指针,最初指向a。每次可顺时针或逆时针旋转一格。例如:a顺时针转到b,逆时针转到z。现在有一个字符串,求需要转多少次可使指针依次指向字符串中的字母。

输入格式:

输入只有一行,是一个字符串。

Sample Input:

zeus

输出格式:

输出最少要转的次数。

Sample Output:

18

思路:

将此字符串看作一个环,分别判断从当前位置到目标所在位置是从前走靠近还是从后走靠近,判断标准为其走的距离是否小于字符串一半的长度,挑选较小的那个加入总和即可。

代码:

#include <iostream>
#include <string>

using namespace std;

int main()
{
	char huan[24];
	int now = 0,sum = 0;
	for (int i = 0; i < 26; i++)
		huan[i] = 'a' + i;
	string a;
	cin >> a;
	for (int i = 0; i < a.size(); i++)
	{
		int to = a[i] - 'a';
		int move = to - now;
		if (move > 13)
			sum += 26 - move;	
		if (move < -13)
			sum += 26 + move;
		if (move >= 0 && move <= 13)
			sum += move;
		if (move <= 0 && move >= -13)
			sum -= move;
		now=to;
	}
	cout << sum << endl;
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CSP第一次模拟 A 咕咕东的奇遇 的相关文章

随机推荐