求dl捞一下吧,全wa了
查看原帖
求dl捞一下吧,全wa了
518733
Lululu77楼主2021/8/17 17:17
#include<stdio.h>
#include<string.h>
int x,y,ans,dx[4]={0,1,0,-1},dy[4]={1,0,-1,0},visit[505][505],np,nq;
char ch[505][505];
void dfs(int p,int q)
{
	int i;
	if(p<0||q<0||p>x+1||q>y+1||visit[p][q])//越界和已访问过
	{
		return;
	}
	visit[p][q]=1;//有洪水经过
	for(i=0;i<4;i++)
	{
		np=p+dx[i];
		nq=q+dy[i];
		dfs(np,nq);
	}
}
int main()
{
	int i,j;
	scanf("%d %d",&x,&y);
	getchar();
	for(i=1;i<=x;i++)
	{
		for(j=1;j<=y;j++)
		{
			scanf("%c",&ch[i][j]);
			if(ch[i][j]=='*')
				visit[i][j]=1;
		}
		getchar();
	}
	dfs(0,0);//从另外增加的外围圈找起,可以避免一开始搜的第一个是墙或其他特殊情况,
	//而直接结束查找。增加外围一圈如果原本的最外面一层有空地的话,它就可以连着空地
	//继续查找。
	for(i=1;i<=x;i++)
	{
		for(j=1;j<=y;j++)
		{
			if(!visit[i][j])//查找剩下没被淹没的地区
				ans++;
		}
	}
	printf("%d\n",ans);
	return 0;
}
2021/8/17 17:17
加载中...