您的位置:首页 > 编程语言

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

2014-05-22 17:47 246 查看
问题描述



如上图所示,将与帅被限制在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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息