POJ 1979 红与黑 深度优先搜索

简述:一个人站在房间里只能踩黑色砖块,问能踩几块。
输入描述:
6 9
…#.
…#





#@…#
.#…#.
11 9
.#…
.#.#######.
.#.#…#.
.#.#.###.#.
.#.#…@#.#.
.#.#####.#.
.#…#.
.#########.

0 0

输出
45
59

注意:N为列M为行

#include<iostream>
#define MAX 21
using namespace std;      
int N,M;
char map[MAX][MAX];
bool book[MAX][MAX]={false};
int next[4][2]={{-1,0},{0,1},{1,0},{0,-1}};
int num; 
void dfs(int x,int y)
{	
	book[x][y]=true;
	for(int i=0;i<4;i++)
	{		
		int dx=x+next[i][0];
		int dy=y+next[i][1];
		if(dx>=1&&dx<=M&&dy>=1&&dy<=N&&map[dx][dy]=='.'&&!book[dx][dy])
		{			
		
			num++;	
			dfs(dx,dy);	
		}			
	}
}
int main()
{
	int p,q;
	char c;
	while(cin>>N>>M&&N&&M)
	{	
	
		for(int i=1;i<=M;i++)
		{
			for(int j=1;j<=N;j++)
			{
				cin>>map[i][j];
				if(map[i][j]=='@')
				{
					q=i;
					p=j;
				}
			}
		
			
		}
		num=1;
	
		dfs(q,p);
		cout<<num<<endl;
	}	
	return 0;
 } 
发布了22 篇原创文章 · 获赞 33 · 访问量 1086

猜你喜欢

转载自blog.csdn.net/qq_42577542/article/details/89159216