HDU 1241 Oil Deposits(DFS)
阿新 • • 發佈:2018-12-02
這道題是一個比較水的搜尋題,思路就是先找到一塊油田,然後找這塊油田周圍的油田,這樣組成了一大塊油田,看一共有多少大塊油田,輸出。
附程式碼如下:
#include<iostream> #include<cstring> #include<cstdio> using namespace std; const int maxn = 110; int vis[maxn][maxn],m,n; int mv[8][2]={{0,1},{0,-1},{1,0},{-1,0},{1,1},{-1,1},{1,-1},{-1,-1}}; char s[maxn][maxn]; void dfs(int x,int y) { for(int i = 0;i < 8; i++) { int next_x = x + mv[i][0]; int next_y = y + mv[i][1]; if(next_x >= 0 && next_x < m && next_y >= 0 && next_y < n && vis[next_x][next_y] == 0) { if(s[next_x][next_y] == '@') { vis[next_x][next_y] = 1; dfs(next_x,next_y); } } } } int main() { while(1) { scanf("%d %d",&m,&n); getchar(); if(m == 0 && n == 0) break; int sum = 0; memset(vis,0,sizeof(vis)); for(int i = 0;i < m; i++) { scanf("%s",s[i]); getchar(); } for(int i = 0;i < m; i++) { for(int j = 0;j < n; j++) { if(s[i][j] == '@' && !vis[i][j]) { dfs(i,j); sum++; } } } printf("%d\n",sum); } return 0; }