0分,全wa,广搜求调!!!
查看原帖
0分,全wa,广搜求调!!!
780173
Zyz20101223楼主2024/8/7 00:35
#include<bits/stdc++.h>
using namespace std;
char mapp[510][510];//地图 
bool vis[510][510];//标记数组 
int m,n;
int dx[8]={0,0,-1,0,1};
int dy[8]={0,-1,0,1,0};//方向数组 
struct node{
	int x,y;
};//结构体变量 
queue<node>q;//node类型的队列 
void bfs()
{
	while(q.size()!=0)//队列不为空 
	{
		node aa;
		aa=q.front();//获取头部 
		for(int i=1;i<=4;i++)
		{
			int X=aa.x+dx[i];
			int Y=aa.y+dy[i];//构建下一步 
			if(X<0||X>m||Y<0||Y>n) continue;//越界 
			if(vis[X][Y]==1) continue;//走过 
			if(mapp[X][Y]=='*') continue;//是障碍 
			//if(mapp[X][Y]=='1') continue;
			vis[X][Y]=1;//标记走过 
			mapp[X][Y]='1';//标记为1(改变颜色) 
			node aaa;
			aaa.x=X,aaa.y=Y;//更新队列 
			q.push(aaa);//放入 
			
		}
		q.pop();//弹出队首 
	}
}
int main()
{
//	freopen("P1506_1.in","r",stdin);
//	freopen("P1506111.out","w",stdout);
	cin>>m>>n;
	for(int i=1;i<=m;i++)
	{
		for(int j=1;j<=n;j++)
		{
			cin>>mapp[i][j];//输入 
		}
	}
//	for(int i=1;i<=m;i++)
//	{
//		for(int j=1;j<=n;j++)
//		{
//			cout<<mapp[i][j];
//		}
//		cout<<endl;
//	}
	node a;
	a.x=0,a.y=0;//预处理 
	
	vis[0][0]=1;//从0,0开始便利 
	mapp[0][0]='1';//标记 
	q.push(a);//放入队列 
	
	bfs();//广搜 
	
	int sum=0;
	for(int i=1;i<=m;i++)
	{
		for(int j=1;j<=n;j++)
		{
			//cout<<mapp[i][j];
			if(mapp[i][j]=='0') sum++;//没改变就加上 
		}
	//	cout<<endl;
	}
	cout<<sum;
 	return 0;
}

2024/8/7 00:35
加载中...