P2960 BFS正常运行 但想不出要把da++(计数器)放在哪个部分
查看原帖
P2960 BFS正常运行 但想不出要把da++(计数器)放在哪个部分
1391256
LTTXiaochuan楼主2024/7/15 20:56

定义了一个计数器da(days)用来记天数,但是发现放在哪个循环都不对。 代码如下:

#include <bits/stdc++.h>
using namespace std;
int mapk[105][105],n,m,mx,my;
int ne[8][2]={{0,1},{1,0},{0,-1},{-1,0},{1,1},{-1,-1},{-1,1},{1,-1}};
struct data{
	int x;
	int y;
};
int main()
{
	cin>>m>>n>>mx>>my;
	for(int i=1; i<=n; i++)
	{
		for(int j=1; j<=m; j++)
		{
			char cc;
			cin>>cc;
			if(cc=='.') mapk[i][j]=0;
			else mapk[i][j]=2;
		}
	}
	int da=0;
	int sx=n-mx+1;
	int sy=my;
	int head=1,tail=2;
	while(head<tail)
	{
		struct data d[10005];
		d[1].x=sx;
		d[1].y=sy;
		mapk[sx][sy]=1;
		for(int i=head; i<tail; i++)
		{
			for(int k=0; k<=7; k++)
			{
				int x=d[i].x,y=d[i].y;
				if(x+ne[k][0]<1 || x+ne[k][0]>n) continue;
				if(y+ne[k][1]<1 || y+ne[k][1]>m) continue;
				if(mapk[x+ne[k][0]][y+ne[k][1]]!=0) continue;
				x+=ne[k][0];
				y+=ne[k][1];
				d[tail].x=x;
				d[tail].y=y;
				tail++;
				mapk[x][y]=1;
			}
			head++;
		}
	}
	cout<<da;
	return 0;
}

感激不尽!

2024/7/15 20:56
加载中...