博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ1915 Knight Moves
阅读量:6311 次
发布时间:2019-06-22

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

问题链接:。

题意简述:输入测试用例数量,输入棋盘大小,输入国际象棋棋盘中的两个点,求马从一个点跳到另一个点的最少步数。

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

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

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

/* POJ1915 Knight Moves */#include 
#include
#include
using namespace std;#define MAXN 300#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][MAXN];int n, l;int startcol, startrow, endcol, endrow;int ans;struct node { int row; int col; int level;};void bfs(){ queue
q; memset(grid, 0, sizeof(grid)); grid[startrow][startcol] = 1; 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/7564454.html

你可能感兴趣的文章
shutdown 定时关机
查看>>
ListView的Adapter使用 之 初学ArrayAdapter<String>
查看>>
Javascript格式化工具
查看>>
node.js Domain 時代のエラー処理のコーディングパターン
查看>>
maven核心,pom.xml详解
查看>>
怎样才能学好C语言
查看>>
了解ASP.NET MVC几种ActionResult的本质:JavaScriptResult & JsonResult
查看>>
Delphi7开发环境的配置
查看>>
HttpModule,HttpHandler,HttpHandlerFactory简单使用
查看>>
记一次zoj月赛
查看>>
第35周星期一总结
查看>>
Google 图片搜索的原理
查看>>
RDLC备忘
查看>>
用C#如何创建、读取cookie
查看>>
[译]JavaScript:运算符
查看>>
一些英文写作的语言技巧总结[zz]
查看>>
BZOJ 1914 [Usaco2010 OPen]Triangle Counting 数三角形
查看>>
PostgreSQL 的pg_buffercache安装方法
查看>>
实现类似QQ自拍头像的功能(demo源码)
查看>>
策略模式---算法策略选择的“懒人用法”
查看>>