翻格仔遊戲

2021-06-20 05:00:26 字數 624 閱讀 2046

前幾天,朋友玩乙個解謎類的遊戲。中間有乙個關卡,大概是這樣的:

有乙個5*5的板子,初始時,每個格仔都是背面朝上。我們可以手動翻轉任意乙個格仔,但其上下左右——如果有的話——的格仔也會隨之一起翻轉,問怎麼翻,可以將所有格仔都翻到正面朝上。

當時蠻無聊,那就寫段**試試看吧。

這裡,手動翻我們定義為主動,而被動當然就很清楚了。

不難想到,對任意乙個格仔來說,我們主動翻n次和n+2次的結果是一樣的。因此,任何一種解決方案都是將每個格仔主動翻0或1次。而且,翻格仔的先後順序也是無所謂的。於是,想到一種簡單粗暴的辦法,窮舉唄,一共2^25種情形。

不多說,直接上**。

#include #include #include int validate(int data, int index, int dimension)

int resolve(int data, int d)

{ int ret = 0;

int i;

for (i=0; i解決方案採用25個bit來描述,每個bit,1表示主動翻,0表示不主動翻。採用位操作不僅節省了空間,而且提高了效率。

結果發現,解決方案不止一種。

當然,需要注意的是,如果6*6的格仔,用32bit整型會導致溢位。

翻紙牌遊戲

題目描述 有一種紙牌遊戲,很有意思,給你n張紙牌,一字排開,紙牌有正反兩面,開始的紙牌可能是一種亂的狀態 有些朝正,有些朝反 現在你需要整理這些紙牌。但是麻煩的是,每當你翻一張紙牌 由正翻到反,或者有反翻到正 時,他左右兩張紙牌 最左邊和最右邊的紙牌,只會影響附近一張 也必須跟著翻動,現在給你乙個亂...

翻紙牌遊戲

翻紙牌遊戲 time limit 3000msmemory limit 32768kb64bit io format i64d i64u submit status practice hdu 2209 description 有一種紙牌遊戲,很有意思,給你n張紙牌,一字排開,紙牌有正反兩面,開始的紙...

格仔遊戲 假的

問題描述 alice和bob玩了乙個古老的遊戲 首先畫乙個n n的點陣 下圖n 3 接著,他們兩個輪流在相鄰的點之間畫上紅邊和藍邊 直到圍成乙個封閉的圈 面積不必為1 為止,封圈 的那個人就是贏家。因為棋盤實在是太大了 n 200 他們的遊戲實在是太長了!他們甚至在遊戲中都不知道誰贏得了遊戲。於是請...