骑士游历问题

原创 2012年05月02日 23:41:00

骑士游历问题

求解骑士游历问题
显然求解骑士游历问题的每一步就是马在棋盘上走的一步。在每一步马需要选择一个方向进行游历,这时记住解的每一步需要记住两件事:
1.当前步的行列位置
2.当前步已经试探过哪些方向了,以便回溯回来时能够选择一个新的方向进行试探


所以使用两个数组,数组board记住棋盘的每个位置是在马的第几步到达的,这反映了问题的解,即第几步到哪个位置。数组direction记住在棋盘的
某个位置已经试探过的方向,每个位置有八个方向,可按某种顺序对八个方向编号,然后在每个位置按编号顺序试探方向。
在确定数据结构之后,同样需要确定下面几个问题:
1.怎样的状态是初始状态。
2.怎样选择当前步可能的路线
3.怎样表示向前推进一步
4.怎样回溯及清除当前步的痕迹
显然初始状态是棋盘的每个位置都置为第0步到达(即还没有到达),每个位置都还没有选择任何方向(可赋值MAX_DIR(=8)表示没有选择方向)。


选择当前步可能的路线就是在当前位置选择一个方向来游历下一步。在选择的时候同样需要区分是从第0个方向开始考虑还是从上一次的下一个方向开始考虑。为了
方便从下一个方向开始考虑,实际上数组direction在某一位置(curr_x,
curr_y)的值记住的是从上一位置选择了哪个编号的方向而到达的,这样容易回溯到上一位置,而且容易在回溯到上一位置之后从下个一方向重新试探。

向前推进一步则要根据所选择的方向推进到下一位置,记住到下一位置所选择的方向,下一位置是第几步到达的,然后增加步数。
回溯一步则要标记当前位置没有到达过(将到达的步数置为0),根据上一步到当前位置的所选择的方向(这个方向是记录当前位置所对应的direction数组中)而回溯到上一位置,然后减少步数。

回溯算法基础---皇后问题,骑士游历,迷宫求解

回溯法(又叫试探法)是属于穷举的子集,对于许多的问题,当我们需要找到某些解集或者满足某种要求的最优解的时候,回溯法往往是很朴素和简单的一种算法。从数学的角度来说,比较适合一些组合数较大的问题,比如五子...
  • Vurteon
  • Vurteon
  • 2013年11月19日 17:14
  • 2590

骑士游历算法

骑士游历,算法
  • sb___itfk
  • sb___itfk
  • 2016年03月16日 15:26
  • 2096

wikioi 1219 骑士游历

题目描述 Description 设有一个n*m的棋盘(2≤n≤50,2≤m≤50),如下图,在棋盘上有一个中国象棋马。 规定: 1)马只能走日字 2)马只能向右跳 问给定起点x1,y1...
  • kingzone_2008
  • kingzone_2008
  • 2013年10月16日 23:50
  • 4137

骑士游历问题(C语言代码)

关于骑士游历问题,大家可以想到的方法是回溯法和贪心算法。回溯法的时间复杂度比较高,贪心算法的时间复杂度就好多了。 骑士游历问题 问题描述: 棋盘大小是8*8,骑士在棋盘任一方格开始游历。要求骑士...
  • wqk1014
  • wqk1014
  • 2012年12月14日 07:05
  • 1262

骑士游历问题

导读:  本文转自http://topic.csdn.net/t/20011025/13/339519.html求解骑士游历问题       显然求解骑士游历问题的每一步就是马在棋盘上走的一步。在...
  • cedar123
  • cedar123
  • 2008年09月15日 15:50
  • 2476

wikioi骑士游历c

#include #include int main() {  int m,n,x1,y1,x2,y2;  unsigned long long d[100][100];  scanf...
  • jacky05110
  • jacky05110
  • 2014年07月04日 18:24
  • 175

【NOIP1997】骑士游历

1219 骑士游历 1997年 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 设有一个n*m的棋盘(2...
  • Loi_Shirley
  • Loi_Shirley
  • 2016年09月29日 07:33
  • 486

【动态规划】CODE[VS] 1219 骑士游历 【Noip1997】

去下中国象棋棋盘dp的水题,固定一边(x轴或y轴),一直按照规则(走日向右)累加过去 数据比较大,小心爆int,注意开long long就完了 //关于边界,根本没有必要,原因显然(赐给问我这个问...
  • LOI_Peacefuldog
  • LOI_Peacefuldog
  • 2017年04月06日 09:50
  • 354

骑士巡游问题 python

# -*- coding: utf-8 -*- import numpy as np def printP():     global n     global pieces     fo...
  • haitaolang
  • haitaolang
  • 2017年01月10日 17:36
  • 587

noip1997 骑士游历 (动态规划+搜索)

A1113. 骑士游历 时间限制:1.0s   内存限制:256.0MB   总提交次数:756   AC次数:85   平均分:52.51 将本题分享到:      ...
  • yuyanggo
  • yuyanggo
  • 2015年08月14日 10:41
  • 589
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:骑士游历问题
举报原因:
原因补充:

(最多只允许输入30个字)