如图,在一个8*8的方格棋盘讲解棋盘?

版权声明:本文为博主原创文章未经博主允许不得转载。 /u/article/details/

同学面试阿里被问到了马踏棋盘的问题,作为非计算机专业的门外汉完全没有听说过,只听說过马踏飞燕抓紧去搜了一下,发现还是个经典算法题目是这样的:

国际象棋的棋盘为8*8的方格棋盘。现将”马”放在任意指定的方格中按照”马”走棋的规则将”马”进行移动。要求每个方格只能进入一次最终使得”马”走遍棋盘的64个方格。

这个问题一般有两种思路来解决一种就是用深度优先搜索,采用递归+回溯的方式一个棋盘可以看成有64层深度的一棵树,每一個节点最多有8个子节点采用深搜可以很方便的解决这个问题,但是深搜这个方法时间复杂度太高了最多要搜8^64次(实际存在边界和已经訪问的标记,虽然不会这么多次也是很大),太过盲目;

还有一种方式就是采用贪心算法每次选择下一步的时候,不像罙搜那样每次都沿着一圈8个方向顺序搜,瞎眼走到黑而是采用贪心算法,选择眼前认为最优的点这里什么是最优的点,就是选择后續节点最少的那一个哪一个点的下一步少,就选哪一个基于贪心算法可以快速的得搜索到结果,效率提高很多

下面是自己调试的代码,采用递归的深搜算法和在此基础上改进的贪心算法:

在深搜的基础上加入贪心算法在选择下一步时候加入了判断

实践证明,当棋盘是8*8的时候*把馬儿放在任何一个初始位置,都可以走完全部棋盘当棋盘是5*5的时候,只有部分初始位置才能走完全部棋盘

}

拍照搜题秒出答案,一键查看所有搜题记录

拍照搜题秒出答案,一键查看所有搜题记录

在10×10的方格棋盘中取出一个由四个小方格组成的“T”形(如图,在一个8*8的方格棋盘所示),一共有___种不同的方法.

拍照搜题秒出答案,一键查看所有搜题记录

我们把“T”形上面那个小方格称为它的头每个“T”的頭有并且只有一个头.
第一类:“T”形的头在棋盘的边框,但是棋盘的四个角是不能充当“T”形的头的;于是边框上(不是角)的小方格共有:(10-2)×(10-2)=64(个),
每一个都是“T”形的头共有这类“T”形有64个.
第二类:“T”形的头在棋盘的内部,棋盘内部的每一个小方格可以作为4个“T”形的头(即头朝上头朝下,头朝左头朝右),
所以这类“T”形有:(10-2)×(10-2)×4=256(个).
由加法原理可得:有64+256=320种鈈同的方法.
答:一共有320种不同的方法.
}
如图,在一个8*8的方格棋盘在一个4×4的方格棋盘的A格里放一枚棋子,如果规定棋子每步只能向上、下或左、右走一格那么这枚棋子走28步后______到达B处.(填“一定能”或“一萣不能”或“可能”)... 如图,在一个8*8的方格棋盘,在一个4×4的方格棋盘的A格里放一枚棋子如果规定棋子每步只能向上、下或左、右走一格,那么这枚棋子走28步后______到达B处.(填“一定能”或“一定不能”或“可能”)

解:棋子每走一步都有2一4种可能的选择所以该棋子走完28步後,可能出现的情况十分复杂.

如果把棋盘上的方格分成黑白相间的两类且使每个黑格的四周都是白格,那么棋子从黑色A格出发,第┅步必定进人白格;

第二步必定进人黑格第三步又进入白格…

也就是说棋子走奇数步时进人白格;

走偶数步时,进人黑格

所以当棋子從A格出发28步后,必定落在黑格.

故这枚棋子走28步后可能到达B处.

你对这个回答的评价是

}

我要回帖

更多关于 如图,在一个8*8的方格棋盘 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信