784 - Maze Exploration

/*
简单题,一次AC
走迷宫问题,深度优先搜索
题意:从*开始走将与之相连的房间里的字符设置成#
*/

#include <cstdio>
#include <cstring>

char G[35][85];
int n;
int dir[4][2]={{0,-1},{0,1},{-1,0},{1,0}};

bool check(int x,int y)
{
	bool ok=true;
	if(x<0 || x>n-1 || y<0 || y>=strlen(G[x]))
		ok=false;
	if(G[x][y]!=' ' && G[x][y]!='*' && G[x][y]!='_')
		ok=false;
	return ok;
}

void dfs(int x,int y)
{
	G[x][y]='#';
	for(int i=0;i<4;i++)
	{
		int xx,yy;
		xx=x+dir[i][0];
		yy=y+dir[i][1];
		if(check(xx,yy))
			dfs(xx,yy);
	}
}

int main()
{
	//freopen("data.in","r",stdin);
	int T,x,y;
	bool found;
	scanf("%d",&T);
	getchar();
	while(T--)
	{
		memset(G,0,sizeof(G));
		n=0;
		found=false;
		while(1)
		{
			gets(G[n]);
			if(G[n][0]=='_')
				break;
			if(found==false)
				for(int i=0;i<strlen(G[n]);i++)
					if(G[n][i]=='*')
					{
						found=true;
						x=n;
						y=i;
					}
			n++;
		}
		dfs(x,y);
		for(int i=0;i<=n;i++)
		{
			printf("%s\n",G[i]);
		}
	}
	return 0;
}


你可能感兴趣的:(784 - Maze Exploration)