Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
180723 | 孔心悦 | 机器人搬重物 | C++ | 编译错误 | 0 | 0 MS | 0 KB | 1417 | 2024-08-21 17:39:38 |
#include <bits/stdc++.h> using namespace std; int n,m,mp[55][55],x,y,ex,ey,dis[55][55],xx,yy; void zuoz(){ if(xx==1)xx=0,y=-1; if(yy==1)xx=1,yy=0; if(yy==-1)xx=-1,yy=0; if(xx==-1)xx=0,yy=1; } void youz(){ if(xx==1)xx=0,y=1; if(yy==1)xx=-1,yy=0; if(yy==-1)xx=1,yy=0; if(xx==-1)xx=0,yy=-1; } bool kz(int x,int y){ if() } int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>mp[i][j]; } } char ch; cin>>x>>y>>ex>>ey>>ch; queue<int> qx,qy; qx.push(x);qy.push(y); if(ch=='N')xx=1,yy=0; if(ch=='S')xx=-1,yy=0; if(ch=='W')xx=0,yy=-1; if(ch=='E')xx=0,yy=1; memset(dis,-1,sizeof(dis)); dis[x][y]=0; while(!qx.empty()){ int x=qx.front(),y=qy.front(); qx.pop();qy.pop(); if(x==ex&&y==ey)break; for(int i=1;i<=5;i++){ int nx,ny; /*if(i==1){ nx=x+i*xx,ny=y+i*yy; if(kz(nx,ny)&&dis[x][y]==-1){ dis[nx][ny]=dis[x][y]+1; qx.push(nx);qy.push(ny); } }*/ //else if(i==2){ if(i<=3){ int flag=1; for(int j=1;j<=i-1;j++){ nx=x+j*xx,ny=y+j*yy; if(!kz(nx,ny)){ flag=0; } } if(flag){ nx=x+i*xx,ny=y+i*yy; if(kz(nx,ny)&&dis[x][y]==-1&&nx>=1&&nx<=n&&ny>=1&&ny<=m){ dis[nx][ny]=dis[x][y]+1; qx.push(nx);qy.push(ny); } } } if(i==4)zuoz(); if(i==5)youz(); //} } } cout<<dis[ex][ey]; return 0; }