博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1372 Knight Moves 广搜
阅读量:5242 次
发布时间:2019-06-14

本文共 1421 字,大约阅读时间需要 4 分钟。

题意:

  一个8*8的正方形棋盘,行用a-h标记,列用1-8标记。

   给定两个坐标,要求你从一个坐标到另一个坐标的最小步数。

  移动和象棋中的马一样,走 “日”  字。

 

坑爹:

  英文太难了,半天不知道走 “日” 字 ,真是我日啊。

 

解法:

  广搜八个方向。

 

View Code
1 #include
2 #include
3 using namespace std; 4 5 int map[8][2]={
{
2,1},{
2,-1},{
1,-2},{
1,2},{-1,-2},{-1,2},{-2,1},{-2,-1}}; 6 int used[10][10]; 7 char c; 8 int starti; 9 int startj;10 char d;11 int overi;12 int overj;13 14 struct node15 {16 int x;17 int y;18 int rank;19 };20 21 void BFS()22 {23 queue
Q;24 struct node a;25 a.x = starti;26 a.y = startj;27 a.rank = 0;28 used[a.x][a.y] = 1;29 Q.push(a);30 31 while(!Q.empty())32 {33 a = Q.front();34 Q.pop();35 36 int i;37 for(i = 0; i<8; i++)38 {39 node b;40 b.x = a.x + map[i][0];41 b.y = a.y + map[i][1];42 if(b.x>0 && b.x <=8 && b.y >0 && b.y<=8 && !used[b.x][b.y])43 {44 b.rank = a.rank + 1;45 used[b.x][b.y] = 1;46 Q.push(b); 47 if(b.x == overi && b.y == overj)48 {49 cout<<"To get from "<
<
<<" to "<
<
<<" takes "<
<<" knight moves."<

 

转载于:https://www.cnblogs.com/pcpcpc/archive/2012/09/03/2669348.html

你可能感兴趣的文章
UVA 10976 - Fractions Again?!
查看>>
Dreamweaver cc新版本css单行显示
查看>>
【android】安卓的权限提示及版本相关
查看>>
JavaScript可否多线程? 深入理解JavaScript定时机制
查看>>
IOS基础学习
查看>>
PHP 导出 Excell
查看>>
Java基础教程——网络基础知识
查看>>
Kruskal基础最小生成树
查看>>
ubuntu 14.04 安装搜狗拼音输入法
查看>>
浅谈算法和数据结构: 一 栈和队列
查看>>
Java内部类详解
查看>>
【hdu 1429】胜利大逃亡(续)
查看>>
图论-次短路求法
查看>>
What's New for Visual C# 6.0
查看>>
ExtJs学习笔记之ComboBox组件
查看>>
关于收费软件
查看>>
getopt_long
查看>>
TensorFlow MNIST CNN 代码
查看>>
javascript之Style物
查看>>
JSON跨域解决方案收集
查看>>