114.hdu--1241--Oil Deposits

很入門的深搜:

#include<iostream>
#include<cstring>
using namespace std;
void dfs(int,int);
int a[8][2]={
{-1,-1},
{-1,0},
{-1,1},
{0,-1},
{0,1},
{1,-1},
{1,0},
{1,1}
};
int n,m;
char map[101][101]={0};
int main()
{	
	freopen("0.txt","r",stdin);
	while(cin>>n>>m &&m!=0){
		memset(map,0,sizeof(map));
		for(int i=0;i<n;++i){
			for(int j=0;j<m;++j){
				cin>>map[i][j];
			}
		}
		int cut = 0;
		for(int i=0;i<n;++i){
			for(int j=0;j<m;++j){
				if(map[i][j] == '@'){
					dfs(i,j);cut++;
				}
			}
		}
		cout<<cut<<endl;
	}
	return 0;
}
void dfs(int i,int j){
	if(i<0 || j<0 || i>=n || j>=m)return ;
	for(int x=0;x<8;++x){
		if(i+a[x][0]>=0 && j+a[x][1]>=0 
		&& j+a[x][1]<m && i+a[x][0]<n 
		&& map[i+a[x][0]][j+a[x][1]] =='@')
		{
			map[i+a[x][0]][j+a[x][1]]='*';dfs(i+a[x][0],j+a[x][1]);
		}	
	}
}
發佈了160 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章