rlgrlgrlg @ 2023-04-05 10:56:12
#include<bits/stdc++.h>
using namespace std;
bool a[1010][1010];
struct node
{
int x,y;
int cnt;
};
queue<node> b;
int p[4][2]={
1,0,
0,1,
-1,0,
0,-1,
};
int n,x1,x2,y1,y2;
int main()
{
cin>>n;
string str;
for(int i=1;i<=n;i++)
{
cin>>str;
for(int j=1;j<=n;j++)
{
a[i][j]=str[j-1]-'0';
}
}
cin>>x1>>y1>>x2>>y2;
b.push((node){x1,y1,0});
while(!b.empty())
{
node t=b.front();
b.pop();
if(t.x==x2&&t.y==y2)
{
cout<<t.cnt;
break;
}
for(int i=0;i<4;i++)
{
int x=t.x+p[i][0];
int y=t.y+p[i][1];
if(x>0&&y>0&&x<=n&&y<=n&&!a[x][y])
{
b.push((node){x,y,t.cnt+1});
a[x][y]=1;
}
}
}
}```
by 2011FYCCCTA @ 2023-04-05 11:03:58
@SkyWave哦,谢谢改正
by Milthm @ 2023-04-05 11:04:44
@rlgrlgrlg 变量y1的问题把
by qifan_maker @ 2023-04-05 11:05:51
@SkyWave 这和万能头有啥关系,我通过200题用的万能头一个编译错误都没有
by SkyWave @ 2023-04-05 11:07:53
y1 也不愿意加入万能头邪教,所以遁逃导致编译错误
by rlgrlgrlg @ 2023-04-05 11:09:00
将万能头文件改掉或将y1,x1,y2,x2定义为局部变量都能通过,但这是为什么啊
by SkyWave @ 2023-04-05 11:09:54
@rlgrlgrlg 因为你开在局部变量就等于造了城墙,这几个人逃不出去了
by Linune_Gump @ 2023-04-05 11:12:44
事实上……二维数组没错,只是y1是一个某一个库中的关键字,不能重复定义,至于你的dev为什么没有报错……建议重新装一下,然后把warning和error开到最大。
鉴于以上原因,楼上的所有方法都是成效的
至于万用头是邪教,这点我不认同。本人用了三年万能头了,很方便,出于小心不用也可以,但不能因噎废食,除非你觉得火车头能显示出你高超的水平。
by Strelitzia_ @ 2023-04-05 11:15:08
@SkyWave 别发电了。万能头不好用大概率是自己不会起变量名。
by SkyWave @ 2023-04-05 11:15:58
@Strelitzia_ 抓住邪教组织宣扬者!!!
by SkyWave @ 2023-04-05 11:19:47
小心洛谷编译器生气不给你程序编译了以后!!!