编程之美之中国象棋将帅问题

来源:互联网 发布:关系数据库语言 编辑:程序博客网 时间:2024/04/30 20:17
问题描述
编程之美之中国象棋将帅问题
如上图所示,将与帅被限制在3*3的格子里运动。我们假定“将”用A来表示,“帅”用B来表示。A、B可以横向与纵向移动一格,但是不能沿对角线方向移动。A与B不能处于同一纵向线上。如A在的位置,那么B就不能在,,的位置。程序代码只能用一个字节存储变量。
实现代码如下
#include <stdio.h>
int main()
{
struct test{
unsigned char a:4;
unsigned char b:4;
} t;

for ( t.a = 1; t.a <= 3; ++t.a )
{
for ( t.b = 1; t.b <= 9; ++t.b )
{
if ( t.b%3 != t.a%3 )
{
//位于同一纵向线上的情况一样
printf("<A = %d,B = %d>", t.a,t.b );
printf("<A = %d,B = %d>", t.a + 3,t.b );
printf("<A = %d,B = %d>", t.a + 6,t.b );
printf("\n");
}
}
}
return 0;
}
0 0