程式設計之美 將帥問題

2021-07-09 04:40:26 字數 890 閱讀 3288

在中國象棋棋盤上,輸出將帥不衝突的所有的位置,只使用乙個變數。

想法:i

將帥能執行的空間 3 x 3,如果將在圖中 a的位置, 帥在下面的6個位置都是合法的, 圖中將帥不衝突的位置一共有 6 x 9 = 54 個

4 個bit 可以表示 16個狀態, 那麼乙個char型的高4位可以表示將的位置,低4位可以用來表示帥的位置,已經足夠了。

**如下:

void function1()

value += 0x10;

}value = value & 0x0f;

value += 0x01;}}

想法 ii把將和帥的活動的區域看做是兩個3x3 和 3x3的陣列,兩個陣列的全排列組合為81組。

可以通過除以9取得 i 中的乙個位置,通過 模9 取得下面的乙個位置。

}想法 iii使用了乙個結構體,也是乙個變數,但使用了a,b兩個成員變數,是不是違規了呢。

typedef struct  _value;

void function3()

}

程式設計之美之將帥問題學習筆記

讓我恍然大悟的鏈結 所以這裡mark一記 這裡的取模運算到底是個什麼意思?黑人問號 通常情況下來說,我用到取模運算的地方就是負載均衡的時候,通過乙個獨立的uuid進行取模,然後分配到指定的伺服器上,例如我的uuid 1,小明的uuid 8,但是我只有兩組伺服器,如何保證我每次進來的時候分配的伺服器是...

程式設計之美 遊戲之樂 中國象棋將帥問題

下過中國象棋的朋友都知道,雙方的 將 和 帥 相隔遙遠,並且不能照面。在象棋殘局中,許多高手能利用這一規則走出許多精妙的殺招。假設棋盤上只有 將 和 帥 二子。下面為了敘述方面,我們約定用a表示 將 b表示 帥 a和b分別被限制在自己的九宮格內,不能走出九宮格,不能走斜線,只能走橫豎線上的一步。請寫...

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

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