poj3279 (搜尋,好題 )

2021-07-08 19:54:41 字數 1164 閱讀 7416

前題:這題是之前 做鄺斌搜尋專題遺留下的三題之一,最近為了複習搜尋姿勢補上。

題意:最大15*15平面(二維陣列)有1有0,對乙個地方操作,與他相鄰四個包括他自己會翻轉(0變1,1變0),求出最少的操作讓全部變成0,輸出操作位置圖。

思路:很明顯每個點操作一次就夠了,兩次恢復原樣,然後 我就想不到了...15*15 對每個點搜尋 不可能,廣搜?從那個點開始?然後就去搜題解,做法是對第一排搜尋,因為第一排確定後,後面有解的情況就固定了。(為什麼,看**)。還有很多人做法是列舉。。。我並沒有完全看懂...等紫書做到列舉那一章再回頭看看。

如果這題搜尋,就兩個搜尋,乙個搜第一排出現的所有可能,第一排確定後,再搜接下來操作。

詳見**。

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define rep(i,a,n) for (int i=a;i=a;i--)

#define pb push_back

#define mp make_pair

#define all(x) (x).begin(),(x).end()

#define fi first

#define se second

#define eps 1e-8

#define m_pi 3.141592653589793

typedef long long ll;

const ll mod=1000000007;

const int inf=1<<30;

ll powmod(ll a,ll b) return res;}

using namespace std;

int m[30][30],h[30][30],resh[30][30],n,m,ans;

void on(int x,int y)

void solve(int row,int cnt)//第一行確定後,搜接下來每行

else

}int main()

{ while(~scanf("%d %d",&n,&m))

{ans=inf;

for(int i=0;i

POJ 3279 搜尋(反轉)

這道題搜尋的角度很有意思。比較直白的想就是每個瓷磚都可以反或不反,2種選擇。這樣的話,搜尋的狀態數時間太多,指數級增長,肯定t。不妨這麼想。如果指定了第1橫排的翻法。那麼如果第1橫排存在黑色,也就是 1,x 為黑。那麼 2,x 就必須反轉才能保證 1,x 為白,那麼第2排的反轉法也確定了。如此類推,...

POJ3279 開關後續

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

POJ3279反轉 位運算

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