Little_Andyyu @ 2023-08-17 17:37:03
#include<bits/stdc++.h>
using namespace std;
int xx[4]={-1,1,0,0},yy[4]={0,0,-1,1};
int h[1001][4];
bool a[1008][1008];
int r,c,x,y,t=0,w=1;
char k;
int main()
{
memset(a,false,sizeof(a));
cin>>r>>c;
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
cin>>k;
if(k=='0')a[i][j]=true;
else a[i][j]=false;
}
}
int q,v,s,u;
cin>>q>>v>>s>>u;
h[1][1]=q;
h[1][2]=v;
h[1][3]=0;
a[q][v]=false;
while(t<w){
t++;
for(int i=0;i<4;i++)
{
x=h[t][1]+xx[i];
y=h[t][2]+yy[i];
if(x>0&&x<=r&&y>0&&y<=c&&a[x][y])
{
w++;
h[w][1]=x;
h[w][2]=y;
h[w][3]=h[t][3]+1;
a[x][y]=false;
if(x==s&&y==u)
{
cout<<h[w][3];
return 0;
}
}
}
}
return 0;
}
by Hanzelic @ 2023-08-17 18:19:55
前排
by taoruixuan12 @ 2023-08-17 18:24:51
有没有一种可能,只能输入一个
by taoruixuan12 @ 2023-08-17 18:34:49
我微调了一下,但为什么RE了
#include<bits/stdc++.h>
using namespace std;
int xx[4]={-1,1,0,0},yy[4]={0,0,-1,1};
int h[1001][4];
bool a[1008][1008];
int r,c,x,y,t=0,w=1;
string k;
int main()
{
memset(a,false,sizeof(a));
cin>>r;
for(int i=1;i<=r;i++){
cin>>k;
for(int j=0;j<k.size();j++)
if(k[j]=='0')a[i][j+1]=true;
else a[i][j+1]=false;
}
int q,v,s,u;
cin>>q>>v>>s>>u;
h[1][1]=q;
h[1][2]=v;
h[1][3]=0;
a[q][v]=false;
while(t<w){
t++;
for(int i=0;i<4;i++)
{
x=h[t][1]+xx[i];
y=h[t][2]+yy[i];
if(x>0&&x<=r&&y>0&&y<=r&&a[x][y])
{
w++;
h[w][1]=x;
h[w][2]=y;
h[w][3]=h[t][3]+1;
a[x][y]=false;
if(x==s&&y==u)
{
cout<<h[w][3];
return 0;
}
}
}
}
return 0;
}
by NO_OI_NO_LIFE @ 2023-08-19 21:24:13
@Little_Andyyu 可以学习一下队列