您的位置:首页 > 职场人生

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

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



A、B二子被限制在己方3×3的格子(横向与纵向分别有三个可以运动到的位置)里运动。例如,在如上的表格里,A被正方形{d10,f10,d8,f8}所包围,而B被正方形{d3, f3, d1, f1}包围。每一步,A、B分别可以横向或纵向移动一格,但不能沿对角线移动。另外,A不能面对B,也就是说,A和B不能处于同一纵向直线上(比如A在d10的位置,那么B就不能在d1,d2以及d3的位置上)。
请写出一个能够生成A、B所有可能位置,并且在控制台上打印出来的C程序。要求在代码中只能使用一个变量。
欢迎同学们将解题思路贴上来,开展讨论。一周后,我们将公布答案。

相关资源:
《编程之美》编辑部 |[/b] 《编程之美》豆瓣 |[/b] 《编程之美》互动网购买 |[/b] 作者Blog | 作者豆瓣
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: