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

2021-07-24 19:55:34 字數 1153 閱讀 8690

中國象棋將帥問題:

在一把象棋的殘局中,象棋雙方的將帥不可以相見,即不可以在中間沒有其他棋子的情況下在同一列出現。而將、帥各被限制在己方的3*3的格仔中運動。相信大家都非常熟悉象棋的玩法吧,這裡就不詳細說明遊戲規則了。

用a、b代表將和帥,請寫出乙個程式,輸出a、b所有合法的位置。要求在**中只能用乙個變數。

#include

#include

using

namespace

std;

/* 1個bytes的一半長度 */

#define half_bit_length 4

/* 1bytes為8bits, 2的8次方為256 */

#define fullmask 255

/* lmask 為 11110000 */

#define leftmask (fullmask#define rightmask (fullmask>>half_bit_length)

/* 左邊4個bits的讀取 */

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

/* 右邊4個bits的讀取 */

#define rget(b) (b & rightmask)

/* 左邊4個bits的設定 */

#define lset(b,n) (b=((b & rightmask) | (n << half_bit_length)))

/* 右邊4個bits的設定 */

#define rset(b,n) (b=((b & leftmask)| n ))

/* 設定棋子左右的移動範圍為3 */

#define width 3

void function1()

}cout

<< "一共有多少種方法:"

<< count << endl;

return ;

}void function2()

return;

}void function3()

node;

node n;

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

}return;

}int main()

《程式設計之美》讀書筆記01 1 2中國象棋將帥問題

程式設計之美 讀書筆記01 1.2中國象棋將帥問題 剛看到題時,首先想到的是除法計算除數的商和餘數 eax和edx 後來才想到c c 中需要動態多維陣列時,new一維陣列來模擬多維陣列時所進行的多維陣列的下標和實際偏移量的轉換,我想很多人學習c或c 時都做過這種事吧。本以為題目要求輸出將帥在棋盤上的...

《程式設計之美》 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...