博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA439 POJ2243 HDU1372 ZOJ1091 Knight Moves【BFS】
阅读量:5846 次
发布时间:2019-06-18

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

问题链接:。基础级练习题,用C++语言编写程序。

题意简述:给出国际象棋棋盘中的两个点,求马从一个点跳到另一个点的最少步数。

问题分析:典型的BFS问题。在BFS搜索过程中,马跳过的点就不必再跳了,因为这次再跳下去不可能比上次步数少。

程序说明:程序中,使用了一个队列来存放中间节点,但是每次用完需要清空。

这里给出两个版本的程序,有一个是设置了边界的。

AC的C++语言程序如下:

/* UVA439 POJ2243 HDU1372 ZOJ1091 Knight Moves */#include 
#include
#include
using namespace std;const int DIRECTSIZE = 8;struct direct { int drow; int dcol;} direct[DIRECTSIZE] = {
{-2, 1}, {-1, 2}, {1, 2}, {2, 1}, {2, -1}, {1, -2}, {-1, -2}, {-2, -1}};const int MAXN = 8;char grid[MAXN][MAXN];struct node { int row; int col; int level;};node start, end2;int ans;void bfs(){ queue
q; memset(grid, ' ', sizeof(grid)); grid[start.row][start.col] = '*'; ans = 0; q.push(start); while(!q.empty()) { node front = q.front(); q.pop(); if(front.row == end2.row && front.col == end2.col) { ans = front.level; break; } for(int i=0; i
> startc >> start.row >> endc >> end2.row) { start.row--; start.col = startc - 'a'; start.level = 0; end2.row--; end2.col = endc - 'a'; bfs(); printf("To get from %c%d to %c%d takes %d knight moves.\n", startc, start.row+1, endc, end2.row+1, ans); } return 0;}
另外一版AC的C++语言程序如下:

/* UVA439 POJ2243 HDU1372 ZOJ1091 Knight Moves */#include 
#include
#include
using namespace std;#define MAXN 8#define DIRECTSIZE 8struct direct { int drow; int dcol;} direct[DIRECTSIZE] = {
{-2, 1}, {-1, 2}, {1, 2}, {2, 1}, {2, -1}, {1, -2}, {-1, -2}, {-2, -1}};char grid[MAXN+4][MAXN+4];int startcol, startrow, endcol, endrow;int ans;struct node { int row; int col; int level;};queue
q;void bfs(){ ans = 0; node start; start.row = startrow; start.col = startcol; start.level = 0; q.push(start); while(!q.empty()) { node front = q.front(); q.pop(); if(front.row == endrow && front.col == endcol) { ans = front.level; break; } for(int i=0; i

转载于:https://www.cnblogs.com/tigerisland/p/7564459.html

你可能感兴趣的文章
Lua性能优化
查看>>
windows server 2008 R2文件服务器
查看>>
新型勒索软件Phobos利用弱安全性***目标
查看>>
4月第4周业务风控关注 | 网络犯罪经济每年1.5万亿美元产出 GDP居全球第12位
查看>>
【刘文彬】RPC的基础:调研EOS插件http_plugin
查看>>
MySQL 储存引擎 MyISAM 和 InnoDB 配置
查看>>
docker学习总结三
查看>>
iOS蓝牙4.0协议简单介绍
查看>>
CSS3的文本特性
查看>>
简单工厂模式
查看>>
Spring基础
查看>>
常见的Linux目录名称
查看>>
Linux下 LVS NAT模型的配置演示
查看>>
PyQt4 学习笔记-2
查看>>
本周遇见的错误
查看>>
基于redis分布式锁实现“秒杀”
查看>>
50个Redis常见面试题讲解
查看>>
关于SVN提交时报out-of-date错误的解决方法
查看>>
在网上看到的机房布线图片
查看>>
用treeset对字符串进行长度排序
查看>>