面试真题:中国象棋将帅问题

探讨在仅有“将”与“帅”的中国象棋残局中,遵循特定规则,利用C语言程序生成所有可能的走位组合。

中国象棋将帅问题

下过中国象棋的朋友都知道,双方的相隔遥远,并且它们不能照面。在象棋残局中,许多高手能利用这一规则走出精妙的杀招。假设棋盘上只有二子(为了下面叙述方便,我们约定用A表示,而B则表示):

AB二子被限制在己方3×3的格子(横向与纵向分别有三个可以运动到的位置)里运动。例如,在如上的表格里,A被正方形{d10,f10,d8,f8}所包围,而B被正方形{d3, f3, d1, f1}包围。每一步,AB分别可以横向或纵向移动一格,但不能沿对角线移动。另外,A不能面对B,也就是说,AB不能处于同一纵向直线上(比如Ad10的位置,那么B就不能在d1,d2以及d3的位置上)。

请写出一个能够生成AB所有可能位置,并且在控制台上打印出来的C程序。要求在代码中只能使用一个变量。

欢迎同学们将解题思路贴上来,开展讨论。一周后,我们将公布答案。

 

相关资源:

《编程之美》编辑部 | 《编程之美》豆瓣 | 《编程之美》互动网购买 | 者Blog | 作者豆瓣

 

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值