zoukankan      html  css  js  c++  java
  • 抓猫

    题目大意

    在某座垃圾堆成山的城市里,有很多流浪猫。恰好,他们把你一个Oler认成了动物学家,了解这些小猫咪的活动轨迹,问你最少要多少捕兽夹才能将猫抓住。
    注:这是一个n*m的矩阵,表示这座城市,猫在这座城里浪来浪去,用"W"表示往西,"E”表示往东,"N"表示往北,"S"表示往南。

    解题思路

    好吧,看到这道题,我就高兴了,暴力模拟啊。
    其实这道题想法很简单,但实现起来却十分复杂,一不小心就会打错。
    用dg来找猫下一步会往哪走,再用bz判重。如果无法走下去就找一个没有打过标记的走,inc(ans);

    r
            n,m,i,j,k,s:longint;
            a:array[1..1000,1..1000]of char;
            b:array[1..1000,1..1000]of longint;
            bz:array[1..1000,1..1000]of boolean;
    procedure dg(i,j,k:longint);
    begin
            b[i,j]:=k;
            bz[i,j]:=true;
            case (a[i,j]) of
            'S':if (bz[i+1,j]=false) then dg(i+1,j,k) else
                    if (k=b[i+1,j]) then inc(s) else exit;
            'N':if (bz[i-1,j]=false) then dg(i-1,j,k) else
                    if (k=b[i-1,j]) then inc(s) else exit;
            'E':if (bz[i,j+1]=false) then dg(i,j+1,k) else
                    if (k=b[i,j+1]) then inc(s) else exit;
            'W':if (bz[i,j-1]=false) then dg(i,j-1,k) else
                    if (k=b[i,j-1]) then inc(s) else exit;
            end;
    end;
    begin
            fillchar(bz,sizeof(bz),false);
            readln(n,m);
            for i:=1 to n do
            begin
                    for j:=1 to m do
                            read(a[i,j]);
                    readln;
            end;
            for i:=1 to n do
            begin
                    for j:=1 to m do
                    begin
                            inc(k);
                            dg(i,j,k);
                    end;
            end;
            writeln(s);
    end.

    如果自己说什麽都做不到而什麽都不去做的话,那就更是什麽都做不到,什麽都不会改变,什麽都不会结束.
  • 相关阅读:
    C语言经典算法100例-039-排序队列中插入新元素
    C语言经典算法100例-037-给10个数排序
    C语言经典算法100例-036-求100之内的素数
    C语言经典算法100例-032~35
    C语言经典算法100例-031-判断星期几
    安卓 短信页面设置(线性布局)
    CSS样式表
    HTML表单
    第1部分 HTML 表格
    多线程
  • 原文地址:https://www.cnblogs.com/Sport-river/p/10390140.html
Copyright © 2011-2022 走看看