在中國象棋棋盤上,輸出將帥不衝突的所有的位置,只使用乙個變數。
想法:i
將帥能執行的空間 3 x 3,如果將在圖中 a的位置, 帥在下面的6個位置都是合法的, 圖中將帥不衝突的位置一共有 6 x 9 = 54 個
4 個bit 可以表示 16個狀態, 那麼乙個char型的高4位可以表示將的位置,低4位可以用來表示帥的位置,已經足夠了。
**如下:
想法 ii把將和帥的活動的區域看做是兩個3x3 和 3x3的陣列,兩個陣列的全排列組合為81組。void function1()
value += 0x10;
}value = value & 0x0f;
value += 0x01;}}
可以通過除以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分別可以橫向或縱向移 動一格。但...