POJ 3279 搜尋(反轉)

2021-07-09 13:28:56 字數 806 閱讀 2154

這道題搜尋的角度很有意思。

比較直白的想就是每個瓷磚都可以反或不反,2種選擇。

這樣的話,搜尋的狀態數時間太多,指數級增長,肯定t。

不妨這麼想。

如果指定了第1橫排的翻法。

那麼如果第1橫排存在黑色,也就是(1,x)為黑。

那麼(2,x)就必須反轉才能保證(1,x)為白,那麼第2排的反轉法也確定了。

如此類推,如果至最後一排都為全白,那麼這是一種可以通過的翻法。

我們只需列舉第1橫排的所有排法,接下去每1橫排的排列方法就都隨第1橫排被確定了。

這樣搜尋,狀態數大大減少了。

其實這種方法是不是和「解線性方程」時,

任意確定乙個變元,來獲得一組解很像呢?

這裡面的門路就深了。然而本弱渣並不太懂。。

#include#include#include#include#includeusing namespace std;

#define inf 0x3f3f3f3f

int m,n;

int mat[20][20];

int ans[20][20];

int tmp[20][20];

int anscnt;

int fin; //finish

int finm[20][20];

bool check()

{ anscnt=0;

for(int j=0;j=0) tmp[0][j-1]=(tmp[0][j-1]+1)%2;

if(j+1=0) tmp[i][j-1]=(tmp[i][j-1]+1)%2;

if(j+1

POJ3279反轉 位運算

題意 要用最少的步驟將題目所給的矩陣中的所有1都變為0,已知每次反轉乙個點時,其周圍與其有公共邊的格仔都會反轉。做法 有條理的做,想要全部反轉,首先要從區域性開始,例如,先把第一行全部變為0,若第一行有n列,那麼相應的對第一行的操作一共就有2 n種,每一種方法不一定都能將第一行全部置為0,更有可能沒...

poj3279 (搜尋,好題 )

前題 這題是之前 做鄺斌搜尋專題遺留下的三題之一,最近為了複習搜尋姿勢補上。題意 最大15 15平面 二維陣列 有1有0,對乙個地方操作,與他相鄰四個包括他自己會翻轉 0變1,1變0 求出最少的操作讓全部變成0,輸出操作位置圖。思路 很明顯每個點操作一次就夠了,兩次恢復原樣,然後 我就想不到了.15...

POJ3279 開關後續

描述 乙個n m 的矩陣,每個格仔 有0和1 兩種狀態 每次可 以翻乙個 格仔,並 且此格仔 的上下左 右都要被 翻。n m的矩陣,每個格仔有0和1兩種狀態.每次可以翻乙個格仔,並且此格仔的上下左右都要被翻。n m的矩陣 每個格 子有0和 1兩種狀 態.每次 可以翻一 個格仔,並且此格 子的上下 左...