POJ1915 Knight Moves(宽搜经典题目)
来源:互联网 发布:python教程 图灵 编辑:程序博客网 时间:2024/05/17 02:01
题目描述:在国际象棋当中,给定一个起点和终点,请问一个马走的最短路径是多少。(求最短路径一般用宽搜,求能否达到用深搜)
#include<stdio.h>#include<queue>#include<string.h>#define Max 310using namespace std;struct Node{int x,y;int step;Node(int xx,int yy,int s):x(xx),y(yy),step(s){}};int size;int si,sj;int di,dj;int ans;int flag[Max][Max];//标记重复扩展的节点int dir[8][2]={{-1,2},{-2,1},{-2,-1},{-1,-2},{1,-2},{2,-1},{2,1},{1,2}};void fun(){queue<Node> a;a.push(Node(si,sj,0));flag[si][sj]=1;while(!a.empty()){Node temp=a.front();if(temp.x==di&&temp.y==dj) { ans=temp.step;return; }else{ for(int i=0;i<8;i++) { int Ni=temp.x+dir[i][0]; int Nj=temp.y+dir[i][1];if(Ni<0||Nj<0||Ni>=size||Nj>=size||flag[Ni][Nj]==1) continue; a.push(Node(Ni,Nj,temp.step+1)); flag[Ni][Nj]=1; } a.pop();}}}int main(){ int Case; scanf("%d",&Case); while(Case--) { memset(flag,0,sizeof(flag)); scanf("%d",&size); scanf("%d%d%d%d",&si,&sj,&di,&dj); fun(); printf("%d\n",ans); }return 0;}
0 0
- POJ1915 Knight Moves(宽搜经典题目)
- POJ1915 Knight Moves 经典BFS
- poj1915 & poj2243 Knight Moves
- poj1915 Knight Moves
- poj1915 - Knight Moves
- POJ1915:Knight Moves(BFS)
- poj1915 Knight Moves
- Knight Moves(poj1915)
- POJ1915---Knight Moves
- POJ1915 (Knight Moves) BFS
- POJ1915 Knight Moves
- POJ1915 Knight Moves
- POJ1915--Knight's Moves
- [POJ1915] Knight Moves
- poj1915——Knight Moves
- poj1915 Knight Moves(bfs)
- poj1915 Knight Moves(bfs)
- poj1915 Knight Moves 双向广度搜索
- 迭代器模式
- 程序的思考之一个可以检验你指针理解功力的程序
- import static和import的区别
- 【JS进阶之路】JavaScript之入门初识
- POJ 2001 Shortest Prefixes(字典树)
- POJ1915 Knight Moves(宽搜经典题目)
- Oracle 11g Data Guard原理研究--推荐
- 我开发的第一个Android软件
- codeforces 570 c
- 关于Cocos2d-x的CC_SYNTHESIZE 和 CC_SYNTHESIZE_READONLY 宏的作用
- Android ADB工具-管理设备/取设备硬件信息(一)
- 如何设置eclipse的自动补齐功能
- Java基础知识——JNI入门介绍
- 【C++】智能指针auto_ptr