Lake Counting 时间限制:1000 ms | 内存限制:65535 KB 描述:
难度:3
由于最近的降雨,农民约翰的田地里的水聚集在不同的地方,用一个n×m(1≤n≤100;1 <= m <= 100)平方。每个正方形包含水( ‘ w ’ )或旱地( ‘ . ’ ))。农民约翰想知道他的地里已经形成了多少池塘。池塘是一组相连的正方形,里面有水,其中一个正方形被认为与其所有八个邻居相邻。
给一张农民约翰的田地图,确定他有多少池塘。
输入:
第1行:两个空格分隔的整数:n和m
第2行:每行n+1: m个字符,代表一行农民约翰的田地。每个字符不是“w”就是“.”。字符之间没有空格。
输出:
农民约翰田地里池塘的数量。
样例输入:
样例输出:
3
接触DFS的第二个算法了,hhhhh
上一个是部分和问题,看完这个后感觉一般的深度优先搜索都莫得问题了,啊哈哈哈。。。咳咳
先来谈谈解题过程吧!!
我们从任意一个 “ W ” 开始入手,进去后直接将其用 " . " 来替换,然后设置条件进行DFS递归就好啦!当然啦,一次dfs的递归只能将与初始 " W " 相连的w全部替换掉,然后count记一次数。直到数组不会存在 w 为止。其中我们可以设置一个双重循环来控制八个方向,(原来还傻傻的分开打了八个循环来分别递归实现,真的笨死了,hhhh)不说了不说了,放代码。
#include<stdio.h>
#include<iostream>
#