流浪猫布满城市的每一个角落,非常影响市容市貌,作为城市聘请的抓猫者,你有一种捕捉器,一定可以捕捉到所有走到里面的猫,更加幸运的是你有一个非常厉害的动物心理学家,他可以预测猫在不同位置的行走方向(共有东、西、南、北四种情况)
为了节约经费,问你最少需要多少个捕捉器才能把所有的猫都抓住。
3 4 SWWW SEWN EEEN
2
100% 1<=N,M<=1000
代码如下:一段不是搜索胜似搜索的代码。。
var
a:array[0..1000,0..1000]of char;
b:array[0..1000,0..1000]of longint;
f:array[0..1000,0..1000]of boolean;
n,m,i,j,k,d,dd,ans:longint;
begin
assign(input,'d.in');reset(input);
assign(output,'d.out');rewrite(output);
readln(n,m);
for i:=1 to n do
begin
for j:=1 to m do
read(a[i,j]);
readln;
end;
fillchar(b,sizeof(b),$7);
k:=1;
for i:=1 to n do
for j:=1 to m do
if not f[i,j] then
begin
d:=i; dd:=j;
while not f[d,dd] do
begin
f[d,dd]:=true;
if a[d,dd]='W' then begin b[d,dd]:=k; dec(dd); continue; end;
if a[d,dd]='E' then begin b[d,dd]:=k; inc(dd); continue; end;
if a[d,dd]='S' then begin b[d,dd]:=k; inc(d); continue; end;
if a[d,dd]='N' then begin b[d,dd]:=k; dec(d); continue; end;
end;
if b[d,dd]>=k then inc(ans);
inc(k);
end;
write(ans);
close(input); close(output);
end.