Codeforces Round #376A (div2)

Night at the Museum

题意:

有一个转盘,26个英文字母均匀分布在转盘边缘,转针初始位置在字母a,每次只能转动到相邻的字母,然后输入一个由26个字母组成的字符串(最长100),不复位地依次转动到相应的字母位置,问:一共需要转多少次?编程实现。

Input:

  输入一个字符串,最长100,由26个英文字母组成。

Output:

  输出需要转动的次数(整数)。

 

解题思想:

由于一圈字母中“..za..”段是不连续的,所以需要分情况讨论,我是这么分的:

以转针所指字母pointer和圆心连线为轴,轴右侧(即<pointer,pointer+13或pointer-13>),除了转针指向‘a’时,其它时刻轴两侧肯定有一侧字母连续  另一侧字母无法连续(包含"za"串) 。

轴左右指的是将轴竖直放置,转针一头在上,此时的左右侧 。

不难看出pointer以‘n’为界限,小于‘n’时不连续段在轴左侧,大于‘n’时不连续段在轴右侧。如下图:

最后代码:

 

 C++ Code

 

 

 

结果测试:

 

posted @ 2017-05-06 18:54  谢维开  阅读(136)  评论(0编辑  收藏  举报
友情链接:回力鞋官网 | 中老年高档女装 | 新航道 | 英语课堂游戏 | 托福和雅思