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