coj1224(宽度优先搜索)

来源:互联网 发布:银行业大数据精准营销 编辑:程序博客网 时间:2024/05/17 04:28

这道题目不算难吗,就是基本的bfs。

#include<iostream>#include<queue>#include<string.h>using namespace std;short map[20][20],vis[20][20],n,m,x1,y1,x2,y2,i,x,y,xn,yn;short dx[8]={1,1,2,2,-1,-1,-2,-2},dy[8]={2,-2,1,-1,2,-2,1,-1};void bfs(){queue<short>q;memset(map,0,sizeof(map));memset(vis,0,sizeof(vis));vis[x1][y1]=1;q.push(x1);q.push(y1);while(!q.empty()){x=q.front();q.pop();y=q.front();q.pop();if (x==x2&&y==y2) break;for (i=0;i<8;i++){xn=x+dx[i];yn=y+dy[i];if (!vis[xn][yn]&&xn>=0&&xn<n&&yn>=0&&yn<m){vis[x][y]=1;q.push(xn);q.push(yn);map[xn][yn]=map[x][y]+1; }}}if ((x!=x2)||(y!=y2)) map[x2][y2]=-1;}int main(){cin>>n>>m>>x1>>y1>>x2>>y2;x1--;x2--;y1--;y2--;bfs();cout<<map[x2][y2]<<endl;return 0;}



0 0
原创粉丝点击