各位大佬帮忙看下这个代码哪里有问题(附题目和代码)
程序代码:
#include <iostream> using namespace std; bool vis[301][301]; int dx[8]={2,-2,1,-1,2,-2,1,-1}, dy[8]={1,1,2,2,-1,-1,-2,-2}; int h[10001][4]; int m, n; void bfs(int lx, int ly, int ex, int ey) { vis[lx][ly]=1; int head=1, tail=1; h[1][1]=lx, h[1][2]=ly, h[1][3]=0; while(head<=tail) { for(int i=0;i<8;i++) { int nx=h[head][1]+dx[i], ny=h[head][2]+dy[i]; if(nx>=0&&nx<n&&ny>=0&&ny<n&&vis[nx][ny]!=1) { tail++; vis[nx][ny]=1; h[tail][1]=nx, h[tail][2]=ny, h[tail][3]=h[head][3]+1; if(nx==ex&&ny==ey) { cout<<h[tail][3]<<endl; return; } } } head++; } } int main() { int x1, y1, x2, y2; cin>>m; for(int i=1;i<=m;i++) { cin>>n; cin>>x1>>y1; cin>>x2>>y2; if(x1==x2&&y1==y2) cout<<0<<endl; else bfs(x1, y1, x2, y2); } return 0; }
http://ybt. 题目链接