zoj 1091 Kniget Moves(bfs)
来源:互联网 发布:intelj java.util.map 编辑:程序博客网 时间:2024/04/30 13:14
确实写了几道广度优先遍历之后,这种题目很容易就可以写出来了,这个题目只是让求出最短路径而已,并没有让把路径给打印出来,所以呢,是深度优先遍历中比较简单的题目啦,不过这道题目好像没有说骑士怎么走法啊,还好看了学姐的博客,和象棋里面的马走法一样,是一个‘日’字,所以呢,一共有八种情况,慢慢遍历就可以了,都这么晚了,该睡觉了,广度优先遍历就先到这吧,算是掌握了,明天开始深搜吧,继续完善自己
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<queue>using namespace std;int map[10][10];int visit[10][10];int dist[10][10];typedef struct{int i,j;}node;int bfs(int x1,int y1,int x2,int y2){node t,w;t.i=x1;t.j=y1; dist[x1][y1]=0; visit[x1][y1]=1; int k;queue<node>q;q.push(t);int step[8][2]={-2,-1,-2,1,-1,-2,-1,2,1,-2,1,2,2,-1,2,1};while(!q.empty()){t=q.front();q.pop();if(t.i==x2&&t.j==y2)return dist[t.i][t.j];else{for(k=0;k<8;k++){w.i=t.i+step[k][0];w.j=t.j+step[k][1];if(w.i>0&&w.j>0&&w.i<=8&&w.j<=8&&!visit[w.i][w.j]){q.push(w);dist[w.i][w.j]=dist[t.i][t.j]+1;visit[w.i][w.j]=1;}}}}}int main(){int i,j,x1,y1,x2,y2;char m,n,p;while(scanf("%c%d%c%c%d",&m,&x1,&p,&n,&x2)!=EOF){getchar();memset(visit,0,sizeof(visit));memset(dist,0,sizeof(dist));int y1=m-'a'+1;int y2=n-'a'+1;int ans=bfs(x1,y1,x2,y2);printf("To get from %c%d to %c%d takes %d knight moves.\n",m,x1,n,x2,ans);}}
0 0
- zoj 1091 Kniget Moves(bfs)
- ZOJ 1091 Knight Moves (BFS)
- ZOJ 1091 Knight Moves 【BFS】
- zoj 1091 knight moves (bfs)
- ZOJ-1091 Knight Moves(bfs)
- ZOJ 1091 POJ 2935 Knight Moves BFS水题
- BFS例题 ZOJ——1091 Knight Moves
- zoj 1091 Knight Moves
- zoj 1091 Knight Moves
- ZOJ-1091 Knight moves
- zoj 1091 Knight Moves
- zoj 1091 Knight Moves
- ZOJ 1091 Knight Moves
- zoj 1091 Knight Moves
- zoj 1091 Knight Moves
- ZOJ 1091 Knight Moves
- zoj 1091 Knight Moves
- ZOJ-1091-Knight Moves
- WIN8.1运行VC++6.0
- 批量修改文本文件编码GB18030为UTF-8
- Hadoop 在Windows7操作系统下使用Eclipse来搭建hadoop开发环境
- win7 64位出现桌面右键鼠标显示忙碌
- Linux鸟哥私房菜基础笔记(八)
- zoj 1091 Kniget Moves(bfs)
- swift创建单例的三种方法
- 学习鸟哥的Linux私房菜笔记(4)——文件
- 数据结构实验之链表一:顺序建立链表
- 翻转链表
- Java环境变量的标准配置
- spark实例:用spark-submit运行spark程序
- iOS开发(Swift):创建UINavigationView的三种方法
- Python3批量转换文本文件编码