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

 

 

 

结果测试:

 

转载于:https://www.cnblogs.com/xieweikai/p/6817688.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值