1 2中國象棋將帥問題

2021-09-22 07:17:10 字數 959 閱讀 9157

#include //

#include 包含byte

#include using

namespace

std;

#define half_bit_length 4

#define fullmask 255

#define lmask (fullmask << half_bit_length)

#define rmask (fullmask >> half_bit_length)

#define rset(b,n) (b=((b&lmask)^n))

#define lset(b,n) (b=((b&rmask)^(n << half_bit_length)))

#define rget(b) (b&rmask)

#define lget(b) ((b&lmask)>>half_bit_length)

#define gridw 3

int main(int argc,char*ar**)

#include using

namespace

std;

int main(int argc,char*ar**)

return0;

}

#include int main(int argc,char*ar**)

i;

for(i.a=1;i.a<=9;i.a++)

for(i.b=1;i.b<=9;i.b++)

if(i.a%3!=i.b%3

) printf(

"a=%d,b=%d\n

",i.a,i.b);

return0;

}

最後一種方法採用了位域的方法來節省空間,注意輸出時候不能使用cout了,會出現錯誤!

《程式設計之美》 1 2 中國象棋將帥問題

下過中國象棋的朋友都知道。雙方的 將 和 帥 相隔遙遠,並且不能照面。在象棋殘局中,許多高手座利用這一規則走出精妙的殺招。假設棋盤上只有 將 和 帥 二子 為了下面敘述方便,我們約定用a 表示 將 b表示 帥 a b二子被限制在己方3x3 的格仔裡運動。每一步,a b分別可以橫向或縱向移 動一格。但...

程式設計之美 1 2中國象棋將帥問題

問題 現在有乙個象棋殘局,只剩下將a帥b,ab只能在3x3的格仔裡橫縱移動,而且ab不能照面。輸出a b的合法位置 要求 中只使用乙個變數 問題本身很簡單,難度在於只用乙個變數。解法一 位向量法,利用乙個8位byte儲存a b的位置,利用巨集抽象出對byte的操作 對l段賦值 對r段賦值 從byte...

程式設計之美 1 2中國象棋的將帥問題

引子問題 中國象棋將帥問題 在一把象棋的殘局中,象棋雙方的將帥不可以相見,即不可以在中間沒有其他棋子的情況下在同一列出現。而將 帥各被限制在己方的3 3的格仔中運動。相信大家都非常熟悉象棋的玩法吧,這裡就不詳細說明遊戲規則了。用a b代表將和帥,請寫出乙個程式,輸出a b所有合法的位置。要求在 中只...