数据结构--马踏棋盘问题

有哪位高手可以帮小弟解决这个问题啊!不胜感激!!!1、国际象棋马的走法:先直走或横走一格,再沿离开原来格子的方向斜走二格,合起来为一步棋;国际象棋棋盘黑白交错,格数8×8... 有哪位高手可以帮小弟解决这个问题啊!不胜感激!!!
1、 国际象棋马的走法:先直走或横走一格,再沿离开原来格子的方向斜走二格,合起来为一步棋;国际象棋棋盘黑白交错,格数8×8。
2、基本要求
1) 给出马从任意一个位置出发遍历整个棋盘的一条路径。
2) 在1)的基础上给出从该位置出发的所有遍历路径
3、问题提示:

整个棋盘可表示为一个M×N的二维数组。假若马目前在位置(i,j)则马下一步可移动的位置0、1、……、7可分别表示为(i-2,j+1),(i-1,j+2),(i+1,j+2),(i+2,j+1),(i+2,j-1),(i+1,j-2), (i-1,j-2), (i-2,j-1)。当然,这些位置一定在棋盘边界以内(保证下一步移动位置坐标(i,j),有0<i<M+1,0<j<N+1)。
格子具有集合性,故考虑使用无向图来表示格子及其间关系;以邻接表作为该无向图中结点与相邻8个结点(4黑4白)的存储结构;以顶点表存储格子,每格为顶点表中一结点,其指针域指向该顶点所能到达的第一个结点。
表头结点:
Vex x y link
Vex:头结点所在的序号
x:头结点所在的横坐标;
y:头结点所在的纵坐标;
link:指向Vex下一个能够到达的邻接结点
链表中结点的结构同表头结点的结构同。在此不一一赘述了;
假定我们按照以下方式对棋盘上的格子进行编号(如红色标注),那么编号与格子所在的坐标(如蓝色标注)位置必然存在一定关系。(留给大家思考)
展开
 我来答
obantu
2009-05-19 · TA获得超过631个赞
知道答主
回答量:20
采纳率:0%
帮助的人:0
展开全部
采用栈的结构(系统自带,递归就是),使用深度优先搜索的方法来处理。
假设它现在正处在第(x,y)。

Procedure DFS(x,y)
Begin
for (x',y')∈{从(x,y)出发每一个只用走一步就可以到达的点} do
if not visited(x,y) then
begin
visited(x,y)<--TRUE
TheNumberOfThePointsThatNotVisited-1
if TheNumberOfThePointsThatNotVisited=1 then print
else DFS(x',y')
Visited(x,y)<--False
TheNumberOfThePointsThatNotVisited+1
end

值得一提的是:马每走一步,它所在的格子的颜色都会发生变化,一些棋盘一只马是可以遍历的,有的则不能。
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
疯狂_小J
2012-04-09
知道答主
回答量:1
采纳率:0%
帮助的人:1742
展开全部
032131313654
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式