var a:array[0..1005,0..1005] of char;
b:array[0..1005,0..1005] of longint;
c:array[1..1000000] of char;
m,n,x,y,i,j,k,d,res:longint;
procedure nhap;
begin
readln(m,n);
for i:=1 to m do
begin
for j:=1 to n do read(a[i,j]);
readln;
end;
end;
procedure tao_vien;
begin
for i:=0 to m+1 do
begin
b[i,0]:=3;
b[i,n+1]:=3;
end;
for i:=0 to n+1 do
begin
b[0,i]:=3;
b[m+1,i]:=3;
end;
end;
procedure truyvet(x,y,k:longint);
begin
for i:=d downto 1 do
begin
if c[i]='W' then inc(y)
else if c[i]='E' then dec(y)
else if c[i]='S' then dec(x)
else if c[i]='N' then inc(x);
b[x,y]:=k;
end;
end;
procedure di(x,y:longint);
begin
d:=0;
repeat
inc(d);c[d]:=a[x,y]; b[x,y]:=1;
if a[x,y]='W' then dec(y)
else if a[x,y]='E' then inc(y)
else if a[x,y]='N' then dec(x)
else if a[x,y]='S' then inc(x)
until b[x,y]<>0;
if (b[x,y]=3) or (b[x,y]=2) then truyvet(x,y,2) ;
// else
// if b[x,y]=1 then truyvet(x,y,1);
end;
procedure xuatbang;
var i,j:longint;
begin
for i:=0 to m+1 do
begin
for j:=0 to n+1 do write(b[i,j],' ');
writeln;
end;
end;
procedure giai;
begin
for i:=1 to m do
for j:=1 to n do
if b[i,j]=0 then
begin
// writeln(i,' ',j);
di(i,j);
// xuatbang;
// writeln;
end;
res:=0;
for i:=1 to m do
for j:=1 to n do
if b[i,j]=1 then inc(res);
writeln(res);
end;
begin
assign(input,'itable.inp');reset(input);
assign(output,'itable.out');rewrite(output);
nhap;
tao_vien;
giai;
end.
* Chuyên dạy lập trình ONLINE cho học sinh THCS, THPT *.
Mọi giao lưu, trao đổi, xin liên hệ: Lê Quang Vinh - zalo: 037.803.8755.
Page: Lớp học Code Sky
Group FB1: Ôn thi HSG9 - THTB - TS10 chuyên tin
Group FB2: Học Scratch - Ôn thi Tin học trẻ bảng A
Thứ Ba, 3 tháng 5, 2022
ITABLE Pascal
Đăng ký:
Đăng Nhận xét (Atom)
Không có nhận xét nào:
Đăng nhận xét
Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.