⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p1056.pas

📁 高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程
💻 PAS
字号:

{$APPTYPE CONSOLE}
const
  fan:array[1..4,1..2]of integer=((-1,0),(0,1),(1,0),(0,-1));
var
        worm:array[1..20,1..2]of shortint;
        map:array[1..50,1..50]of boolean;
        road:array[1..100]of 1..4;
        i,j,n:integer;
procedure init;
var
  t:char;
begin
        fillchar(map,sizeof(map),true);
        for i:=1 to 20 do
        begin
                worm[i,1]:=25;
                worm[i,2]:=30-i+1;
                map[25,10+i]:=false;
        end;
        for i:=1 to n do
        begin
                read(t);
                case t of
                'N':road[i]:=1;
                'E':road[i]:=2;
                'S':road[i]:=3;
                'W':road[i]:=4;
                end;
        end;
end;

procedure work;
var
        se:shortint;
begin
        se:=0;
        i:=1;
        while (i<=n)and(se=0) do
        begin
          map[worm[20,1],worm[20,2]]:=true;
          for j:=20 DOWNto 2 do
          begin
                worm[j,1]:=worm[j-1,1];
                worm[j,2]:=worm[j-1,2];
          end;
          worm[1,1]:=fan[road[i],1]+worm[1,1];
          worm[1,2]:=fan[road[i],2]+worm[1,2];
          if not((worm[1,2]<=50)and(worm[1,2]>=1)and(worm[1,1]<=50)and(worm[1,1]>=1))then
          begin
            se:=2;
          end
          else
          begin
            if map[worm[1,1],worm[1,2]] then map[worm[1,1],worm[1,2]]:=false
            else se:=1;
          end;
          inc(i);
        end;
        if se=0 then writeln('The worm successfully made all ',n,' moves.');
        if se=1 then writeln('The worm ran into itself on move ',i-1,'.');
        if se=2 then writeln('The worm ran off the board on move ',i-1,'.');
end;

begin
        readln(n);
        while n<>0 do
        begin
                init;
                work;
                readln(n);
        end;
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -