jzoj 1588. 【普及模拟】GPS定位

来源:互联网 发布:ios10 连接网络 编辑:程序博客网 时间:2024/06/08 02:16

题目描述

今天是你的生日,你得到一个生日礼物全球定位系统GPS(Global Positioning System),可以用来记录你的路线的一些重要的点,便于回来时方便,这些点需要输入名字来标识,但这个GPS没有键盘,只有4个方向键,中间是一个“accept”键,如下所示:

            

屏幕上显示一个虚拟键盘,排成5*6的网格,如下:


当你准备输入一个名字时,光标一开始在字母“A”处,你可以通过方向键移动光标到你想要的位置,然后按下“accept”键,一旦你全部输完就必须把光标移到“enter”处再按下“accept”完成整个输入。

给你一个名字,计算出光标最少需要移动多少次。

输入

    输入包含一个长度不超过40的字符串,你可以假设所有字符都在键盘上能够找到(字母都是大写)。

输出

输出一个整数表示光标的移动次数。
很简单的模拟,从第一个点开始,最后一个点结束,每次加上坐标差就可以了

var  a:array['A'..'Z',1..2] of integer;  i,j,k,m,s,n,x,y:longint;  st:ansistring;begin  assign(input,'j3.in'); reset(input);  assign(output,'j3.out');rewrite(output);  readln(st);  j:=1; k:=1;  for i:=1 to 26 do    begin      a[chr(ord('A')+i-1),1]:=j;      a[chr(ord('A')+i-1),2]:=k;      inc(k);      if k>6 then        begin          k:=1;          inc(j);        end;    end;  x:=1; y:=1;  for i:=1 to length(st) do    begin      if st[i] in ['A'..'Z'] then        begin          s:=s+abs(x-a[st[i],1])+abs(y-a[st[i],2]);          x:=a[st[i],1];          y:=a[st[i],2];        end      else if st[i]=' ' then        begin          s:=s+abs(x-5)+abs(y-3);          x:=5; y:=3;        end       else if st[i]='-' then        begin          s:=s+abs(x-5)+abs(y-4);          x:=5; y:=4;        end       else if st[i]='.' then        begin          s:=s+abs(x-5)+abs(y-5);          x:=5; y:=5;        end    end;  s:=s+abs(x-5)+abs(y-6);  writeln(s);end.


2 2