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’时不连续段在轴右侧。如下图:

最后代码:

  1. # include <iostream>
  2. # include <string>
  3. using namespace std;
  4.  
  5. int main(void)
  6. {
  7. int clockLetter(string c);
  8. string s;
  9. int numStep;
  10. cin >> s;
  11.  
  12. numStep = clockLetter(s);
  13.  
  14. cout << numStep << endl;
  15. return ;
  16. }
  17.  
  18. int clockLetter(string c)
  19. {
  20. int n = ; // 步数,初值为0
  21. int i;
  22. char pointer = 'a'; // 转针初始值为‘a’
  23.  
  24. for(int i=;i<c.length();i++)
  25. { // 以转针所指字母和圆心连线为轴,轴右侧(即<pointer,pointer+13或pointer-13>),除了转针指向‘a’时,其它时刻轴两侧肯定有一侧字母连续 另一侧字母无法连续(包含"za"串) 。
  26. // 轴左右指的是将轴竖直放置,转针一头在上,此时的左右侧
  27. if(pointer <= 'n') // 此时轴左侧字母不连续
  28. {
  29. if(c[i]>=pointer&&c[i]<=pointer+) // 连续段
  30. {
  31. n += c[i]-pointer;
  32. }
  33. else if(c[i]>pointer+) // 不连续段 1
  34. {
  35. n += - (c[i]-pointer);
  36. }
  37. else if(c[i]<pointer) // 不连续段 2
  38. {
  39. n += pointer-c[i];
  40. }
  41. }
  42. else if(pointer > 'n') // 此时轴右侧字母不连续
  43. {
  44. if(c[i]<=pointer&&c[i]>=pointer-) // 连续段
  45. {
  46. n += pointer-c[i];
  47. }
  48. else if(c[i]>pointer) // 不连续段 3
  49. {
  50. n += c[i] - pointer;
  51. }
  52. else if(c[i]<pointer-) // 不连续段 4
  53. {
  54. n += - ( pointer - c[i] );
  55. }
  56. }
  57.  
  58. pointer = c[i]; // 在转下一个字母的时候,让指针停在当前位置,不复位
  59. }
  60.  
  61. return n;
  62. }

C++ Code

结果测试:

Codeforces Round #376A (div2)的更多相关文章

  1. Codeforces Round #539 div2

    Codeforces Round #539 div2 abstract I 离散化三连 sort(pos.begin(), pos.end()); pos.erase(unique(pos.begin ...

  2. 【前行】◇第3站◇ Codeforces Round #512 Div2

    [第3站]Codeforces Round #512 Div2 第三题莫名卡半天……一堆细节没处理,改一个发现还有一个……然后就炸了,罚了一啪啦时间 Rating又掉了……但是没什么,比上一次好多了: ...

  3. Codeforces Round#320 Div2 解题报告

    Codeforces Round#320 Div2 先做个标题党,骗骗访问量,结束后再来写咯. codeforces 579A Raising Bacteria codeforces 579B Fin ...

  4. Codeforces Round #564(div2)

    Codeforces Round #564(div2) 本来以为是送分场,结果成了送命场. 菜是原罪 A SB题,上来读不懂题就交WA了一发,代码就不粘了 B 简单构造 很明显,\(n*n\)的矩阵可 ...

  5. Codeforces Round #361 div2

    ProblemA(Codeforces Round 689A): 题意: 给一个手势, 问这个手势是否是唯一. 思路: 暴力, 模拟将这个手势上下左右移动一次看是否还在键盘上即可. 代码: #incl ...

  6. Codeforces Round #626 Div2 D,E

    比赛链接: Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics) D.Present 题意: 给定大 ...

  7. CodeForces Round 192 Div2

    This is the first time I took part in Codeforces Competition.The only felt is that my IQ was contemp ...

  8. Codeforces Round #359 div2

    Problem_A(CodeForces 686A): 题意: \[ 有n个输入, +\space d_i代表冰淇淋数目增加d_i个, -\space d_i表示某个孩纸需要d_i个, 如果你现在手里 ...

  9. Codeforces Round #360 div2

    Problem_A(CodeForces 688A): 题意: 有d天, n个人.如果这n个人同时出现, 那么你就赢不了他们所有的人, 除此之外, 你可以赢他们所有到场的人. 到场人数为0也算赢. 现 ...

随机推荐

  1. CSharpGL(5)解析3DS文件并用CSharpGL渲染

    CSharpGL(5)解析3DS文件并用CSharpGL渲染 我曾经写过一个简单的*.3ds文件的解析器,但是只能解析最基本的顶点.索引信息,且此解析器是仿照别人的C++代码改写的,设计的也不好,不方 ...

  2. ASP.NET Web API中的Controller

    虽然通过Visual Studio向导在ASP.NET Web API项目中创建的 Controller类型默认派生与抽象类型ApiController,但是ASP.NET Web API框架本身只要 ...

  3. [ASP.NET MVC 小牛之路]15 - Model Binding

    Model Binding(模型绑定)是 MVC 框架根据 HTTP 请求数据创建 .NET 对象的一个过程.我们之前所有示例中传递给 Action 方法参数的对象都是在 Model Binding ...

  4. K-Means聚类和EM算法复习总结

    摘要: 1.算法概述 2.算法推导 3.算法特性及优缺点 4.注意事项 5.实现和具体例子 6.适用场合 内容: 1.算法概述 k-means算法是一种得到最广泛使用的聚类算法. 它是将各个聚类子集内 ...

  5. 几个最常用的用来代替Div的HTML5元素

    虽说html5中大多数功能性的元素如<video><canvas><audio>等还得不到当前主流浏览器的支持(主要就是指IE浏览器了),但至少那些个与布局相关的元 ...

  6. HTML5_03之Canvas绘图

    1.Canvas绘图--JS绘图: <canvas id='c1' width='' height=''></canvas> * Canvas尺寸不能用CSS设置: c1.he ...

  7. 让IE系列支持HTML5的html5shiv.js和respond.min.js

    HTML5越来越成为主流,被广大搜索引擎所使用,但IE对HTML5的支持却常被人唾弃. 解决方案有两种: 1.为网站创建多套模板,通过程序对User-Agent的判断给不同的浏览器用户显示不同的页面, ...

  8. OpenCascade Primitives BRep-Cylinder

    OpenCascade Primitives BRep-Cylinder eryar@163.com Abstract. BRep is short for Boundary Representati ...

  9. x86汇编程序基础(AT&T语法)

    一.简单的汇编程序 以下面这段简单的汇编代码为例 .section .data .section .text .globl _start _start: movl $, %eax movl $, %e ...

  10. C#单例模式详解

    C#要实现单例模式必须要有以下三点: 声明私有静态成员.私有化构造函数.静态函数返回实例. private static GameManager s_GameManager=null; private ...