hdu-1241 Oil Deposits(dfs)

題目鏈接http://acm.hdu.edu.cn/showproblem.php?pid=1241

題目大意:*是土地@是油井,油井周圍八個座標點的油井和當前油井相連,相連的油井共同組成一個大油井,輸出有多少個大油井

題解:對每個點進行判斷,如果是油井,則ans++,並深搜將其所有相連的油井置爲*

AC代碼

#include <iostream>
#include"string.h"
using namespace std;

int n,m;
char maze[105][105];
int ans;
void dfs(int x,int y){
    if(maze[x][y] == '*')    return;
    maze[x][y] = '*';
    for(int i = -1;i<=1;i++)
        for(int j = -1;j<=1;j++)
            dfs(x+i,y+j);
}

int main(int argc, char** argv) {
    while(cin>>n>>m){
        if( n ==0 && n == m)    break;
        ans = 0;
        memset(maze,'*',sizeof(maze));
        for(int i = 1;i<=n;i++)
            for(int j = 1;j<=m;j++)
                cin>>maze[i][j];
        
        for(int i = 1;i<=n;i++)
            for(int j = 1;j<=m;j++){
            	if(maze[i][j] == '@'){
            		dfs(i,j);
            		ans++;
				}
            }
        
        cout<<ans<<endl;
    }
    return 0;
}

小結:比較簡單的dfs題目,18年藍橋杯有個類似的題,不過那個是計算有多少島嶼,這個是計算有多少油井,大同小異。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章