编程之美里有个将帅问题蛮有意思的,该问题的具体描述是:(根据中国象棋的基本原则)在只有双的将帅棋盘上,找出所有双方可以落子的位置(将帅不能碰面),但只能使用一个变量。
解法一般也就是 循环然后判断去除重复位置。而对于只能用一个变量的限制一般通过把变量拆成2个来解决。
我有一个全新的思路,不做判断,不拆变量,直接用计算来解决问题。
附算法源程序:
当然,为了适应算法,我的坐标体系稍微有点变化:9 个格这么划分
0 3 6
1 4 7
2 5 8
代码的解释么,真男人,不解释,哈哈。
至于这个算法比原文的好还是差,那就是仁者见仁的事了,呵呵。
附:原文的一个算法代码
本文提出了一种新颖的方法来解决编程之美中的将帅问题,该方法不进行判断也不拆分变量,而是直接通过计算来确定双方将帅的所有合法位置。
445





