我跪了

P1126 机器人搬重物

So?
by t162 @ 2019-05-19 15:48:30


```cpp #include<iostream> using namespace std; int n,m,x0,y0,x9,y9; int a[51][51]; char dect; bool vis[51][51][4]; int head,tail; int q[2501][4]; int xx1[4]={-1,0,1,0}; int yy1[4]={0,1,0,-1}; int xx2[4]={-2,0,2,0}; int yy2[4]={0,2,0,-2}; int xx3[4]={-3,0,3,0}; int yy3[4]={0,3,0,-3}; int find(char q){ if(q=='N') return 0; if(q=='E') return 1; if(q=='S') return 2; if(q=='W') return 3; } void read(){ cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>a[i][j]; if(a[i][j]==1){ vis[i][j][0]=1; vis[i][j][1]=1; vis[i][j][2]=1; vis[i][j][3]=1; } } } cin>>x0>>y0>>x9>>y9>>dect; //N 0 E 1 S 2 W 3 vis[x0][y0][find(dect)]=1; tail=1,head=0; q[1][0]=x0; q[1][1]=y0; q[1][2]=find(dect); q[1][3]=0; } bool check(int xxx,int yyy){ if(xxx>=1&&xxx<=n&&yyy>=1&&yyy<=m) return true; return false; } void bfs(){ bool flag=0; while(tail>=head){ head++; int h=head; int x=q[head][0],y=q[head][1],f=q[head][2],t=q[head][3]; cout<<x<<" "<<y<<" "<<f<<endl; vis[x][y][f]=1; if(x==x9&&y==y9){ cout<<t<<endl; flag=1; break; } if(!vis[x][y][(f+1)%4])//右转 vis[x][y][(f+1)%4]=1,q[++h][0]=x,q[h][1]=y,q[h][2]=(f+1)%4,q[h][3]=t+1,tail++; if(f==0&&!vis[x][y][3])//左转 vis[x][y][3]=1,q[++h][0]=x,q[h][1]=y,q[h][2]=3,q[h][3]=t+1,tail++; else if(f!=0&&!vis[x][y][(f-1)%4])//左转 vis[x][y][(f-1)%4]=1,q[++h][0]=x,q[h][1]=y,q[h][2]=(f-1)%4,q[h][3]=t+1,tail++; int x1=x+xx1[f],y1=y+yy1[f]; if(check(x1,y1)&&!vis[x1][y1][f])//creep 1 vis[x1][y1][f]=1,q[++h][0]=x1,q[h][1]=y1,q[h][2]=f,q[h][3]=t+1,tail++; int x2=x+xx2[f],y2=y+yy2[f]; if(check(x2,y2)&&!vis[x2][y2][f])//walk 2 vis[x2][y2][f]=1,q[++h][0]=x2,q[h][1]=y2,q[h][2]=f,q[h][3]=t+1,tail++; int x3=x+xx3[f],y3=y+yy3[f]; if(check(x3,y3)&&!vis[x3][y3][f])//run 3 vis[x3][y3][f]=1,q[++h][0]=x3,q[h][1]=y3,q[h][2]=f,q[h][3]=t+1,tail++; } if(!flag) cout<<-1<<endl; //cout<<head<<" "<<tail; } int main(){ read(); bfs(); return 0; } ```
by 初嫁QAQ @ 2019-05-19 15:57:34


So?
by 森岛帆高 @ 2019-05-19 15:57:49


~~**@[初嫁QAQ](/space/show?uid=102028) 没找着错**~~
by 初嫁QAQ @ 2019-05-19 15:58:00


~~**@[初嫁QAQ](/space/show?uid=102028) 是我没有读懂题意QAQ**~~
by 初嫁QAQ @ 2019-05-19 16:00:26


@[初嫁QAQ](/space/show?uid=102028) 您怕不是想打 ~~@[初嫁QAQ](/space/show?uid=102028) 没找着错~~
by willbe233 @ 2019-05-19 16:20:06


|