题意:给你n*m的图,@代表有油田的格子,*代表没油田的格子,如果油田旁边有油田就合并一起成为一个油田区,合并的方向为8个,现在问你油田合并过后,有多少个油田区

解法:用dfs or bfs

dfs:

#include<iostream>
using namespace std;
char map[102][102];
int dir[8][2]={{0,1},{0,-1},{1,0},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1}};
void dfs(int x,int y)
{
int i,x1,y1;
if(map[x][y]=='@')
{
map[x][y]='*';
for(i=0;i<8;i++)
{
x1=x+dir[i][0];
y1=y+dir[i][1];
dfs(x1,y1);
}
}
} int main()
{
int n,m,i,j,ans;
while(cin>>n>>m,n||m)
{
ans=0;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
cin>>map[i][j];
getchar();
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(map[i][j]=='@')
{
dfs(i,j);
ans++;
}
}
}
cout<<ans<<endl;
}
return 0;
}

bfs:

#include<iostream>
#include<queue>
using namespace std;
int dir[8][2]={{1,0},{0,1},{-1,0},{0,-1},{1,-1},{-1,1},{-1,-1},{1,1}};
char map[102][102];
int n,m,ans;
struct node
{
int x;
int y;
}begin,end;
int bfs()
{
queue<node>q;
node temp,t;
int i,ans=0;
q.push(begin);
while(!q.empty())
{
t=q.front();
q.pop();
for(i=0;i<8;i++)
{
temp.x=t.x+dir[i][0];
temp.y=t.y+dir[i][1];
if(map[temp.x][temp.y]!='*'&&temp.x>=0&&temp.x<n&&temp.y>=0&&temp.y<m)
{ q.push(temp);
map[temp.x][temp.y]='*';
}
}
}
return 0;
} int main()
{
int i,j;
while(cin>>n>>m,n||m)
{
ans=0;
for(i=0;i<n;i++)
{
getchar();
for(j=0;j<m;j++)
{
cin>>map[i][j];
}
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(map[i][j]=='@')
{
begin.x=i;
begin.y=j;
map[i][j]='*';
bfs();
ans++;
}
}
}
cout<<ans<<endl; }
return 0;
}

hdu 1241 Oil Deposits_dfs or bfs的更多相关文章

  1. HDU 1241 Oil Deposits (DFS/BFS)

    Oil Deposits Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

  2. HDU 1241 Oil Deposits(石油储藏)

    HDU 1241 Oil Deposits(石油储藏) 00 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)   Probl ...

  3. HDU 1241 Oil Deposits --- 入门DFS

    HDU 1241 题目大意:给定一块油田,求其连通块的数目.上下左右斜对角相邻的@属于同一个连通块. 解题思路:对每一个@进行dfs遍历并标记访问状态,一次dfs可以访问一个连通块,最后统计数量. / ...

  4. hdu 1241 Oil Deposits(DFS求连通块)

    HDU 1241  Oil Deposits L -DFS Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & ...

  5. HDOJ(HDU).1241 Oil Deposits(DFS)

    HDOJ(HDU).1241 Oil Deposits(DFS) [从零开始DFS(5)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架 ...

  6. DFS(连通块) HDU 1241 Oil Deposits

    题目传送门 /* DFS:油田问题,一道经典的DFS求连通块.当初的难题,现在看上去不过如此啊 */ /************************************************ ...

  7. HDU 1241 - Oil Deposits - [BFS]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1241 题意: 求某块平面上,连通块的数量.一个油田格子若周围八个方向也有一个油田格子,则认为两者相连通 ...

  8. HDU 1241 Oil Deposits bfs 难度:0

    http://acm.hdu.edu.cn/showproblem.php?pid=1241 对每个还未访问的点bfs,到达的点都标为一块,最后统计有多少块即可 #include <cstdio ...

  9. HDU 1241 Oil Deposits DFS(深度优先搜索) 和 BFS(广度优先搜索)

    Oil Deposits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...

随机推荐

  1. 使用univocity-parsers创建和读取csv文件

    import com.univocity.parsers.csv.CsvFormat;import com.univocity.parsers.csv.CsvParser;import com.uni ...

  2. 百度地图V1.5 LocalSearch增加浮动窗体的操作内容

     1.初始化LocalSearch控件 LocalSearch = new BMap.LocalSearch(map, { renderOptions : { map : map, panel : & ...

  3. poj1001(高精度)

                                                               Exponentiation Time Limit: 500MS   Memory ...

  4. java.lang.UnsatisfiedLinkError: no XXX in java.library.path

    其中涉及的测试源码如下: For those who didn't install Javawith default settings, a systematic way for solving JN ...

  5. hdu 5610 Baby Ming and Weight lifting

    Problem Description Baby Ming is fond of weight lifting. He has a barbell pole(the weight of which c ...

  6. Java程序员面试题集(136-150)(转)

    转:http://blog.csdn.net/jackfrued/article/details/17740651 Java程序员面试题集(136-150) 摘要:这一部分主要是数据结构和算法相关的面 ...

  7. 【N^2迪杰斯特拉】

    void finddist(int &s) { int ans=2000000000; for(int i=1;i<=N;i++) if(visit[i]==0) { if(dist[i ...

  8. nginx默认虚拟主机

    server { listen 80 default_server; server_name localhost; index index.html index.htm index.php; root ...

  9. 使用秘钥对登录Linux系统

    一,用密码登录系统,可能由于密码的简单或者其他原因造成被其他人登录,这样服务器可是很不安全的,为此我们可以使用秘钥登录系统. 二, 1,设置密钥对前,我们需要下载一个工具 https://the.ea ...

  10. XMLHttpRequest Level 2 使用指南

    XMLHttpRequest是一个浏览器接口,使得Javascript可以进行HTTP(S)通信. 最早,微软在IE 5引进了这个接口.因为它太有用,其他浏览器也模仿部署了,ajax操作因此得以诞生. ...