求问
  • 板块灌水区
  • 楼主_cyh0412_
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/7/13 14:12
  • 上次更新2024/7/13 15:27:44
查看原帖
求问
731644
_cyh0412_楼主2024/7/13 14:12

为什么构造函数会报错?

#include<bits/stdc++.h>
using namespace std;

const int MAXN=100;
const int dx[]={1,0,-1,0};//x对于下、右、上、左四个方向的偏移量 
const int dy[]={0,1,0,-1};//y对于下、右、上、左四个方向的偏移量 

struct P
{
	int x,y;
	P(int x,int y) :x(x),y(y){} 
}q[MAXN*MAXN];

int f,r,n,m,dis[MAXN][MAXN];
bool st[MAXN][MAXN],g[MAXN][MAXN];

int bfs()
{
	q[r++]={1,1},st[1][1]=1,dis[1][1]=1;
	while (f!=r)
	{
		P tmp=q[f++];
		if (tmp.x==n&&tmp.y==m) return dis[tmp.x][tmp.y];
		for (int i=0;i<4;i++)
		{
			int x=tmp.x+dx[i],y=tmp.y+dy[i];
			if (x<1||x>n||y<1||y>m) continue;//判断越界 
			if (st[x][y]||!g[x][y]) continue;
			q[r++]={x,y};
			st[x][y]=1; 
			dis[x][y]=dis[tmp.x][tmp.y]+1;
		}
	}
	return 0;
}

int main()
{
	//freopen("Input.txt","r",stdin);
	//freopen("Output.txt","w",stdout);
	cin>>n>>m;
	for (int i=1;i<=n;i++)
		for (int j=1;j<=m;j++)
		{
			char c;
			cin>>c;
			if (c=='.') g[i][j]=1;
		}
	cout<<bfs()<<endl;
	return 0;
}
2024/7/13 14:12
加载中...