关闭

【暑假集训专题#搜索 HDU1241】

标签: 搜索
834人阅读 评论(0) 收藏 举报
分类:

【题目链接】click here~~

【题目大意】'@'代表油田位置,'*'代表地面,八个方向相邻的油田视为一个,求给定地图里油田数目

【解题思路】八个方向搜索即可

代码:

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
const int N=1010;
int dir4[4][2]= {{1,0},{0,1},{-1,0},{0,-1}};
int dir8[8][2]= {{1,0},{1,1},{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1}};
char mat[N][N];
int row,line,t,k,ans,cnt,res;
bool check(int dx,int dy)
{
    if(dx>=0&&dx<=row&&dy>=0&&dy<=line) return true;
    return false;
}
void dfs(int x,int y)
{
    mat[x][y]='*';
    for(int i=0; i<8; ++i)
    {
        int dx=x+dir8[i][0];
        int dy=y+dir8[i][1];
        if(check(dx,dy)&&mat[dx][dy]=='@')
        {
            dfs(dx,dy);
        }
    }
}
int main()
{
    while(~scanf("%d%d",&row,&line)&&row&&line)
    {
        for(int i=0; i<row; ++i)
            scanf("%s",mat[i]);
        res=0;
        for(int i=0; i<row; ++i)
        {
            for(int j=0; j<line; ++j)
            {
                if(mat[i][j]=='@')
                {
                    dfs(i,j);
                    res++;
                }
            }
        }
        printf("%d\n",res);
    }
    return 0;
}

/*
1 1
*
3 5
*@*@*
**@**
*@*@*
1 8
@@****@*
5 5
****@
*@@*@
*@**@
@@@*@
@@**@
0 0
*/


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

【暑假集训专题#搜索】

poj 2386 Lake Counting 【题意】: 有一个大小为N×M的园子,雨后积起了水。八连通的积水被认为是连接在一起的。请求出园子里总共有多少水洼?(八连通指的是下图中相对W 的*的部分)...
  • u013050857
  • u013050857
  • 2015-08-09 21:31
  • 559

2014暑假集训搜索专题

A - 漫步校园 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status De...
  • u013445530
  • u013445530
  • 2014-07-22 21:08
  • 723

暑假集训-搜索

迭代加深搜索 dancing links 精确覆盖 0 / 18 Problem A HDU 1043 Eight(South Central USA 1998) ...
  • MacinChang
  • MacinChang
  • 2016-01-06 15:35
  • 97

暑假集训——贪心专题——A题

贪心 题意:有n个人要过河,只有一条船,而且每次只能坐2个人,过河花费的时间为2个人中划船最慢的那个人的时间,现在给出每个人过河花费所需的时间,问n个人全部过去所需要的最小时间。 思路:注意船开过...
  • Follow_My_Dreams
  • Follow_My_Dreams
  • 2015-07-24 17:35
  • 162

暑假集训日记--8.5--搜索

今天一天基本上都在找错误的过程中…… 首先附昨天调试没通过的题: Problem Description You are given two pots, having the v...
  • sdau164185
  • sdau164185
  • 2017-08-05 22:31
  • 58

暑假集训日记--8.4--搜索

哇……今天比昨天还失败 感觉自己越来越菜了…… 今天只出了一道题。用了一下午加一晚上的时间研究了一道题。。。到现在还没法记录路径。。。要不就一直Runtime Error。。 这道题明天一定要A...
  • sdau164185
  • sdau164185
  • 2017-08-04 22:29
  • 47

暑假集训日记--8.3--搜索

今天依旧是搜索……但是今天干的事情好像并不多…… 上午看了看hdoj上的题……并没有A出一个……可能是水平还不够……于是看了会书。 下午是一场练习赛……上来第一道题就搜索。。。搜索啥……根本不是搜索…...
  • sdau164185
  • sdau164185
  • 2017-08-03 22:30
  • 62

暑假集训日记--7.31--搜索

看了半天的搜索的课件以及资料,做了半天的搜索的练习题。逐步复习了搜索的有关知识。 又重新开始学搜索,这一天也只写了几个代码。有hdoj上的,有poj上的,还有就是曾经老师给的资料。都是比较基础的,但是...
  • sdau164185
  • sdau164185
  • 2017-07-31 22:54
  • 67

暑假集训日记--8.9--搜索、图论专题总结

今天搜索和图论的专题就结束了。 总结一下在这一周半的学习: 首先通过做题巩固了搜索的知识。深搜和广搜也有了较大的提高。但是图论花的时间相对低。 专题只做了18个题,剩下的题会补上。 在过去的一...
  • sdau164185
  • sdau164185
  • 2017-08-09 21:38
  • 58

暑假集训——贪心专题——E题

贪心 题意:有m个人玩牌,每个人有n张手牌,手牌点数最大为n*m,每场每个人拿除一张手牌,谁最大谁赢,现在给出你的手牌点数,问你一定能赢多少场。 思路:先将手牌从大到小排序,每次枚举一张牌,看比它大的...
  • Follow_My_Dreams
  • Follow_My_Dreams
  • 2015-07-24 18:15
  • 141
    个人资料
    • 访问:535083次
    • 积分:11467
    • 等级:
    • 排名:第1557名
    • 原创:535篇
    • 转载:24篇
    • 译文:75篇
    • 评论:90条
    自我简介
    nyist计科13级本科,bjtu17级在读硕士,喜爱算法,热爱编程,欢迎一起学习交流。
    博客专栏