題解 翻棋子

2021-09-25 03:42:46 字數 1188 閱讀 3129

description

有乙個4*4的棋盤,放有16枚棋子。

每個棋子都是一面黑一面白,一開始有的黑面朝上,有的白面朝上。

下面是乙個例子,這個例子用文字描述為:

bwbw

wwww

bbwb

bwwb

我們可以任選乙個棋子,把它自己和它的相鄰棋子(上下左右,如果有的話)翻面。

比如在例子中如果我們選第3行第1列的棋子翻面,布局就變成如下:

bwbw

bwww

wwwb

wwwb

題目求出能把所有棋子都翻成白色或都黑色的最少的步數。

input

4行每行4個字元,可能是b(黑)或w(白)

output

乙個數,最少步數。如果無解輸出impossible

sample input

bwbw

wwww

bbwb

bwwb

sample output

impossible

hint

#includeusing namespace std;

char ch;

int mp[5][5],ans=0x3f3f3f3f;

const int dir[5][2]=,,,,};

bool flag;

int check(int x)

bool in(int x,int y)

bool check()

void fan(int x,int y)

}void dfs(int step,int x,int y)

if(x==5)

return;

fan(x,y);

if(y==4)

dfs(step+1,x+1,1);

else

dfs(step+1,x,y+1);

fan(x,y);

if(y==4)

dfs(step,x+1,1);

else

dfs(step,x,y+1);

return;

}int main()

dfs(0,1,1);

if(!flag)

cout<<"impossible"

cout

}

棋子移動題解

魔法世界的歷史上曾經出現過一位赫赫有名的不敗戰神陳慶之,陳慶之以棋道悟兵法,一生身經數百戰,沒有一場敗績,而且沒有一場不是在絕對的劣勢中大勝敵軍。受此影響,魔法世界開始流行一種叫棋子移動的遊戲,即有2n個棋子 n 4 排成一行,開始位置為白子全部在左邊,黑子全部在右邊,例如當n 4時,棋子排列情況為...

翻棋子遊戲與Nim遊戲

翻棋子遊戲 題意 乙個棋盤上每個格仔有乙個棋子,每次操作可以隨便選乙個朝上的棋子 x,y 代表第i行第j列的棋子,選擇乙個形 如 x,b 或 a,y 其中b y,a x 的棋子,然後把它和 x,y 一起翻轉,無法操作的人輸。分析 把座標為 x,y 的棋子看成大小分別為x和y的兩堆石子,則本題轉化為了...

翻幣問題 題解

有n個硬幣 6 n 20000 全部正面朝上排成一排,每次將其中5個硬幣翻過來放在原位置,直到最後全部硬幣翻成反面朝上為止。試程式設計找出步數最少的翻法,輸出最少步數及翻法。從鍵盤輸入乙個正整數n 6 n 20000 表示硬幣的數量。第1行 乙個整數,表示最少步數 第2行至最後一行 先是乙個整數,表...