bfs入门题 poj 1915 knight moves
来源:互联网 发布:java积分商城系统源码 编辑:程序博客网 时间:2024/06/05 20:51
这题的起点和终点是合法的,并且后台的数据都能找到一条合法,简单路径(好像从棋盘的任意一点出发,按照国际象棋中骑士的移动规则,能够到达棋盘上任意一点。不确定,有知道的可以告诉我。)。没有什么特殊情况,很适合作为bfs 入门的题目。
#include<stdio.h>#include<string.h>int quene[100000][3],head,tail,n,a,b,c,d,dir[8][2]={-2,1,-1,2,1,2,2,1,2,-1,1,-2,-1,-2,-2,-1};//quene¸öÊý¡£bool chess[310][310];void visit(int row,int col){ quene[tail][0]=row; quene[tail][1]=col; quene[tail][2]=quene[head-1][2]+1; chess[row][col]=1; ++tail;}void bfs(){ int row,col,pre,i; quene[0][0]=a; quene[0][1]=b; quene[0][2]=0; chess[a][b]=1; while(head!=tail) { row=quene[head][0]; col=quene[head++][1]; if(row==c&&col==d) break; for(i=0;i<8;++i) if(row+dir[i][0]>=0&&row+dir[i][0]<n&&col+dir[i][1]>=0&&col+dir[i][1]<n&&!chess[row+dir[i][0]][col+dir[i][1]]) visit(row+dir[i][0],col+dir[i][1]); } printf("%d\n",quene[head-1][2]);}int main(){ int t; scanf("%d",&t); while(t--) { scanf("%d%d%d%d%d",&n,&a,&b,&c,&d); head=0;tail=1; memset(chess,0,sizeof(chess)); bfs(); } return 0;}
0 0
- bfs入门题 poj 1915 knight moves
- POJ 1915 Knight Moves 双向BFS 入门
- POJ 1915 Knight Moves bfs
- POJ 1915Knight Moves(BFS)
- poj 1915 Knight Moves(bfs)
- poj 1915 Knight Moves(bfs)
- POJ 1915 BFS-Knight Moves
- [BFS]poj 1915 Knight Moves
- Poj 1915 Knight Moves ( BFS
- POJ 1915 Knight Moves BFS
- 【BFS】poj 1915 Knight Moves
- POJ 1915 Knight Moves【裸BFS || aStar*入门演练】
- POJ 2243 Knight Moves (BFS入门)
- POJ 1915 Knight Moves bfs || 双向bfs
- BFS入门-Knight Moves
- poj 1915 knight moves(bfs 简单)
- poj 1915 knight moves (双向bfs)
- POJ 1915 Knight Moves (BFS)
- python编绎程序中出现this constructor takes no arguments
- iOS开发UI篇——CAlayer(创建图层)
- Android中LruCache的源码分析
- 《剑指Offer》读书笔记---面试题24:二叉搜索树的后序遍历序列
- (Android)创建数据库与完成数据库的增删查改
- bfs入门题 poj 1915 knight moves
- MyEclipse 创建 servlet 项目
- Delphi TBitMap 位图组件
- LeetCode: Ugly Number
- 获取指定月份最后一天
- c++标准库—命名空间std和头文件的演变
- 简单理解Socket
- 深刻理解Linux进程间通信(IPC)
- C++与Java比较之向上转型