[codevs1569]最佳绿草 dfs练习

dfs,每次搜到打标签,制成false,把整个图搜一遍,每次搜到联通块时答案加一。

var
        map:array[0..110,0..110] of boolean;
        i,j,n,c,ans:longint;
        ok:boolean;
        ch:char;

        function dfs(i,j:longint):boolean;
        var t:longint;
        begin
                if not(map[i][j]) then exit(false);
                t:=0;
                ok:=false;
                if map[i][j] then
                begin
                        inc(t);
                        ok:=true;
                        map[i][j]:=false;
                        dfs(i,j-1);
                        dfs(i,j+1);
                        dfs(i+1,j);
                        dfs(i-1,j);
                end;
                exit(ok);
        end;



        begin
                fillchar(map,sizeof(map),false);
                readln(n,c);
                for i:=1 to n do
                begin
                for j:=1 to c do
                begin
                        read(ch);
                        if ch='#' then map[i][j]:=true;
                end;
                readln;


                end;

                        for i:=1 to n do
                        for j:=1 to c do
                        if dfs(i,j)then inc(ans);
                writeln(ans);
        end.

 喜欢就收藏一下,vic私人qq:1064864324,加我一起讨论问题,一起进步^-^

转载于:https://www.cnblogs.com/victorslave/p/4833513.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值