POJ 3279Fliptile(狀壓 搜尋)

2021-09-25 21:04:37 字數 871 閱讀 5823

有乙個m*n的棋盤,每個格仔上是0或1,每次可以對乙個格仔做一次翻轉操作,將翻動的格仔和上下左右4個格仔的0/1翻轉。問最少做多少次翻轉可以將所有格仔翻轉成0,輸出翻轉方案。沒有方案時輸出「impossible」。

從哪些塊被翻轉入手,先列舉第一行的所有狀態(也就是翻轉的狀態),1表示被翻轉了,0表示沒有動,那麼唯一對其有影響的就下面的那塊,上一行如果把周圍被翻的次數總和以及自己是黑是白相加為奇數那麼就是1,這一行必須翻來影響上一行,最後判斷最後一行是不是全0,注意細節。

#include#include#include#include#include#include#include#include#include#include#include#include#include#define inf 0x3f3f3f3f

#define llinf 0x3f3f3f3f3f3f3f3f

#define max_len 50100*4

using namespace std;

typedef long long ll;

const int mod=998244353;

int n,m;

int mp[20][20];

int ansmp[20][20];

int book[20][20];

int mov[5][2]=,,,,};

int check(int x,int y)

return temp%2;

}int dfs()

int hh=dfs();

if(hh}

if(!flag)

else

printf("\n");}}

return 0;

}

poj 3279 Fliptile 列舉 模擬

簡要題意 踩乙個點翻轉周圍五個點,求全翻成白色的方案中殘磚次數最少而且字典序最小的。我們可以首先確定第一行的翻轉情況,這個用二進位制列舉。然後之後每一行的翻轉情況就已經可以確定了,然後模擬出來就可以了。算是比較經典的題,好像看到過不少類似的題。include include include incl...

POJ3279 Fliptile 開關問題

記錄乙個菜逼的成長。挑戰程式設計書上的 pragma comment linker,stack 1024000000,1024000000 include include include include include include include include include include ...

反轉問題 POJ 3279 Fliptile

problem description 農夫約翰直到聰明的牛產奶多。於是為了提高牛的至上他準備了如下遊戲。有乙個n m的格仔,每個格仔可以翻轉正反面,它們一面是黑色,另一面是白色。黑色的格仔翻轉後就是白色,白色的格仔翻轉過來則是黒色。遊戲要做的就是把所有的格仔都翻轉成白色。不過因為牛蹄很大,所以每次...