1 条题解
-
0
C++ :
#include<cstdio> #include<queue> #include<cstring> using namespace std; int a[40][40]; int f[40][40]; int m,n,m1,m2; queue<int> q; queue<int> p; int si,sj,ei,ej; int b[8],d[8]; int main() { memset(f,0x7f,sizeof(f)); scanf("%d%d%d%d",&m,&n,&m1,&m2); for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) { scanf("%d",&a[i][j]); if(a[i][j]==3) { si=i; sj=j; } if(a[i][j]==4) { ei=i; ej=j; } } b[1]=m1;b[2]=m1;b[3]=m2;b[4]=m2;b[5]=-m1;b[6]=-m1;b[7]=-m2;b[8]=-m2; d[1]=m2;d[2]=-m2;d[3]=m1;d[4]=-m1;d[5]=-m2;d[6]=m2;d[7]=-m1;d[8]=m1; q.push(si); p.push(sj); f[si][sj]=0; while(!q.empty() && !p.empty()) { for(int i=1;i<=8;i++) { int x=q.front()+b[i]; int y=p.front()+d[i]; if( ( a[x][y]==1 || a[x][y]==4 ) && x>0 && y>0 && x<=m && y<=n ) { q.push(x); p.push(y); f[x][y]=min(f[x][y],f[q.front()][p.front()]+1); if(a[x][y]==4) { printf("%d",f[x][y]); return 0; } a[x][y]=0; } } q.pop(); p.pop(); } }
- 1
信息
- ID
- 992
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者