hdu 1241 油田 裸DFS

题意:@代表油田 8个方向上还有@就相连 相当于求图中连通子图的个数
Sample Input
1 1 // n m
*
3 5
*@*@*
**@**
*@*@*
1 8
@@****@*
5 5
****@
*@@*@
*@**@
@@@*@
@@**@
0 0

Sample Output
0
1
2
2

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<string>
 5 #include<algorithm>
 6 using namespace std;
 7
 8 int d[8][2] = {{1,0},{1,-1},{1,1},{0,-1},{0,1},{-1,0},{-1,-1},{-1,1}};
 9 char map[110][110] ;
10
11 int n , m ;
12
13 void dfs(int x , int y)
14 {
15     int fx , fy ;
16     int i ;
17     map[x][y] = ‘*‘ ;
18     for (i = 0 ; i < 8 ; i++)
19     {
20         fx = x + d[i][0] ;
21         fy = y + d[i][1] ;
22         if (fx>=0 && fx<n && fy>=0 && fy<m && map[fx][fy] == ‘@‘)
23         {
24             dfs(fx,fy) ;
25         }
26     }
27 }
28
29 int main()
30 {
31     //freopen("in.txt","r",stdin) ;
32
33
34    while (scanf("%d %d" , &n , &m) !=EOF)
35    {
36        if (n == 0 && m == 0)
37           break ;
38        int i , j ;
39
40
41        for (i = 0 ; i < n ; i++)
42        {
43            for (j = 0 ; j < m ; j++)
44           {
45               cin>>map[i][j];         //用scanf一直WA=.=
46           }
47
48        }
49        int sum = 0 ;
50        for (i = 0 ; i < n ; i++)
51         for (j = 0 ; j < m ; j++)
52        {
53            if (map[i][j] == ‘@‘)
54            {
55                sum++ ;
56
57                dfs(i,j) ;
58            }
59        }
60        printf("%d\n" , sum) ;
61
62    }
63
64     return 0;
65 }

时间: 2024-10-20 17:35:17

hdu 1241 油田 裸DFS的相关文章

HDU 1241 Oil Deposits(DFS)

题目链接 Problem Description The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSurvComp works with one large rectangular region of land at a time, and creates a grid that divides the land into numerous squa

HDU 1241 油田

这道题明明很简单但不知道为什么运行结果一直错,但提交却是对的!代码真是神奇,不过我猜测可能是提上给出的数据错了,可能提上给的数据m和n后多给了一个空格或回车,但题的数据没有 #include<stdio.h> #include<string.h> #define N 110 int m, n; char maps[N][N]; int dir[8][2]={{-1, -1}, {-1, 0}, {-1, 1}, {0, -1}, {0, 1}, {1, -1}, {1, 0}, {

DFS(连通块) HDU 1241 Oil Deposits

题目传送门 1 /* 2 DFS:油田问题,一道经典的DFS求连通块.当初的难题,现在看上去不过如此啊 3 */ 4 /************************************************ 5 Author :Running_Time 6 Created Time :2015-8-4 10:11:11 7 File Name :HDOJ_1241.cpp 8 ************************************************/ 9 10

hdu 1241 Oil Deposits (一次dfs搞定有某有)

1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<algorithm> 5 using namespace std; 6 char map[105][105]; 7 8 int dir[8][2]={0, 1, 1, 0, -1, 0, 0, -1, 1, 1, 1, -1, -1, 1, -1, -1}; 9 int n, m; 10 int ans; 11 12

HDU 1241 Oil Deposits --- 入门DFS

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1241 /* HDU 1241 Oil Deposits --- 入门DFS */ #include <cstdio> int m, n; //n行m列 char mapp[105][105]; /* 将和i,j同处于一个连通块的字符标记出来 */ void dfs(int i, int j){ if (i < 0 || j < 0 || i >= n || j >= m

hdu 1241 Oil Deposits(DFS求连通块)

HDU 1241  Oil Deposits L -DFS Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Description The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSurvComp works with one large rec

PKU 1562/HDU 1241 Oil Deposits(原油有多少块区域---BFS,DFS)

Oil Deposits Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSurvComp works with one large rectangular region o

HDU 1241 Oil Deposits(石油储藏)

p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-size: 10.5000pt } h1 { margin-top: 5.0000pt; margin-bottom: 5.0000pt; text-align: center; font-family: 宋体; color: rgb(26,92,200); font-weight: bold; fo

深搜基础题目 杭电 HDU 1241

HDU 1241 是深搜算法的入门题目,递归实现. 原题目传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1241 代码仅供参考,c++实现: #include <iostream> using namespace std; char land[150][150]; int p,q; void dfs(int x,int y){ land[x][y] = '*'; if(land[x-1][y]!= '@' && land[x+1]