POJ2386(水坑)

书中第32页有解析

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int n,m;
char field[110][110];

void dfs(int x, int y)
{
    field[x][y] = '.';

    for(int i = -1; i <= 1; i++)
    {
        for(int j = -1; j <= 1; j++)
        {
            int dx = x + i;
            int dy = y + j;
            if(dx < n && dx >= 0 && dy < m && dy >= 0 && field[dx][dy] == 'W') dfs(dx,dy);
        }
    }

    return;
}
int main()
{
    #ifdef xxz
    freopen("in.txt","r",stdin);
    #endif // xxz
    ios::sync_with_stdio(false);//这句可以加速OI速度
    while(cin>>n>>m)
    {
        int ans = 0;
        for(int i = 0; i < n; i++)
            for(int j = 0; j < m; j++)
            cin>>field[i][j];
        for(int i = 0; i < n; i++)
            for(int j = 0; j < m; j++)
        {
            if(field[i][j] == 'W')
            {
                dfs(i,j);
                ans++;
            }
        }

        cout<<ans<<endl;

    }
    return 0;
}
时间: 2024-10-12 06:53:15

POJ2386(水坑)的相关文章

HDU1241&amp;POJ2386 dfs简单题

2道题目都差不多,就是问和相邻所有点都有相同数据相连的作为一个联通快,问有多少个连通块 因为最近对搜索题目很是畏惧,总是需要看别人代码才能上手,就先拿这两道简单的dfs题目来练练手,顺便理一理dfs的思路,分析清楚dfs的退出递归的条件和什么时候进行递归调用是至关重要的,这两道题目不涉及回溯,对于需要回溯的题目也要清楚分析,找到回溯条件,在对一个新的状态dfs时,后面加上回溯的语句 HDU1241代码: 1 #include <cstdio> 2 #include <cstring>

水坑配合JSON Hijacking

jsonp:解决跨域的问题 水坑攻击:引用百度百科",寻找攻击目标经常访问的网站的弱点,先将此网站"攻破"并植入攻击代码,一旦攻击目标访问该网站就会"中招",简单的说 你要搞XX人 你通过前期的信息收集 知道他的人都一般去什么网站 之后搞定经常上的这个网站 在这个网站挂马 我会告诉你 我12年的时候就是这样XX了某个国外的企业么. 今天的这个漏洞主要是获取个人信息,并没有针对这些人进行攻击,漏洞都是玩烂的. 大概说下我知道的利用水坑配合jsonp进行攻击的

POJ2386 Lake Counting

这个题与UVa572 Oil Deposits完全相同,程序改两个字符,改了一下结束条件就通过了. 问题链接:POJ2386 Lake Counting. 题意简述:给定m×n矩阵 (1 <= N <= 100; 1 <= M <= 100),其中'W'代表水域,'.'代表陆地,问有几片湖. 本题可以使用深度优先搜索求解,用广度优先搜索也可以求解,差别不大. 这个程序说明如下: 1.方向数组 使用方向数组后,各个方向的试探的程序就会变得简洁了,用循环处理即可. 2.避免重复搜索 将

深度优先搜索DFS (poj2386,poj1979, poj3009,poj1321,aoj0033,aoj0118)

深度优先搜索(DFS) 往往利用递归函数实现(隐式地使用栈). 深度优先从最开始的状态出发,遍历所有可以到达的状态.由此可以对所有的状态进行操作,或列举出所有的状态. 1.poj2386 Lake Couting 题意:八连通被认为连接在一起,求总共有多少个水洼? Sample Input: 10 12 W........WW. .WWW.....WWW ....WW...WW. .........WW. .........W.. ..W......W.. .W.W.....WW. W.W.W.

poj2386 Lake Counting(简单DFS)

转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://poj.org/problem?id=1562 ---------------------------------------------------------------------------------------------------------------------------------------------------------- 欢

poj-2386 lake counting(搜索题)

Time limit1000 ms Memory limit65536 kB Due to recent rains, water has pooled in various places in Farmer John's field, which is represented by a rectangle of N x M (1 <= N <= 100; 1 <= M <= 100) squares. Each square contains either water ('W')

bzoj1627 / P2873 [USACO07DEC]泥水坑Mud Puddles

P2873 [USACO07DEC]泥水坑Mud Puddles bfs入门. 对于坐标为负的情况,我们可以给数组下标加上$abs(min(minx,miny))$转正(根据题意判断) 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<queue> 5 #define re register 6 using namespace std; 7 #define M 502

【POJ2386】Lake Counting

Lake Counting Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 22861   Accepted: 11530 Description Due to recent rains, water has pooled in various places in Farmer John's field, which is represented by a rectangle of N x M (1 <= N <= 10

POJ2386 Lake Counting(DFS)

从任意的W开始,不停地把邻接的部分用'.'代替.1次DFS后与初始的这个W连接的所有W就都被替换成了'.',因此直到图中不再存在W为止,总共进行DFS的次数就是答案了.8个方向共对应了8种状态转移,每个格子作为DFS的参数至多被调用一次,所以复杂度为O(8×N×M)=O(N×M). #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace