问题描述
在中国象棋里将和帅是不能碰面的,如下图所示,当将位于d10时,帅就不能在d1,、d2、d3。请写一个程序,输出将、帅所有的合法位置。要求在代码中仅用一个变量。
如果只是输出将、帅的合法位置,那这题就比较容易了,只要二重循环判断一下就行,但后面一个条件就将题目的难度上升了好多。
算法分析
因为是判断两个对象A、B的位置符不符合要求,而且每个对象一共就只有9个位置可选,可以比较快地想到程序的大体框架:
1. 遍历A的位置
2. 遍历B的位置
3. 判断A、B的位置组合是否满足要求
4. 如果满足,则输出
因为每个对象只有9个位置,所以循环次数一共也就81次。