zoukankan      html  css  js  c++  java
  • 油田(Oil Deposits)

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=84562#problem/L

    题意:

           输入一个m行n列的字符矩阵,相邻的“@”(横、竖或者对角线方向,即有8个方向)属于同一块,统计字符“@”可以有多少块。(输入0结束)

           案例:

           input

           1 1

           *

           3 5

           *@*@*

           **@**

           *@*@*

           1 8

           @@****@*

           0 0

           output

           0

           1

           2

    思路分析:

           利用DFS广搜。

           返回条件为不出区域,不是到过的,不是@。

    源代码如下:

     1 #include<iostream>
     2 #include<cstring>
     3 #define maxn 105
     4 using namespace std;
     5 int n,m,idx[maxn][maxn];
     6 char pic[maxn][maxn];
     7 void dfs(int x,int y,int c)               //搜索
     8 {
     9     if(x<0||x>=m||y<0||y>=n)return;
    10     if(idx[x][y]>0||pic[x][y]!='@')return;
    11     idx[x][y]=c;
    12     for(int i=-1;i<=1;i++)              //8个方向
    13         for(int j=-1;j<=1;j++)
    14             if(i!=0||j!=0)dfs(x+i,y+j,c);
    15 }
    16 int main()
    17 {
    18     int i,j,count;
    19     cin>>m>>n;
    20     while(m)
    21     {
    22         count=0;
    23         for(i=0;i<m;i++)
    24             for(j=0;j<n;j++)
    25                 cin>>pic[i][j];
    26         memset(idx,0,sizeof(idx));
    27         for(i=0;i<m;i++)
    28             for(j=0;j<n;j++)
    29                 if(idx[i][j]==0&&pic[i][j]=='@')dfs(i,j,++count);
    30         cout<<count<<endl;
    31         cin>>m>>n;
    32     }
    33     return 0;
    34 }
  • 相关阅读:
    eureka流程图
    Feign和Ribbon的重试机制
    idea编译kafka 2.6 源码
    Feign的调用流程
    FeignClientFactoryBean创建动态代理
    Feign源码的入口
    Ribbon的检查服务
    Ribbon是怎么和Eureka整合的?
    Eureka过期
    backup: sqlHelper --cSharp
  • 原文地址:https://www.cnblogs.com/q-c-y/p/4684958.html
Copyright © 2011-2022 走看看