/*
translation:
給出一張二維的圖表,1表示該處的電燈開啟,0表示該處的電燈關閉。每次關閉一盞燈會使得其相鄰的上下左右四個位置的燈狀態反轉。
給出使得燈全滅的最小次數的方案以及對應的每個位置上的操作次數。
solution:
二維開關問題。
考慮到每次列舉左上角的燈泡,然後按照一維的開關問題求解。但是這樣的話每次的狀態選擇就成了問題,因為上下左右四個位置都可
note:
*:二維的開關問題解法
date:
2016.11.7
*/#include #include #include using namespace std;
const int maxn = 20;
int board[maxn][maxn];
int ans[maxn][maxn]; //儲存最優解
int flip[maxn][maxn]; //記錄每個位置上面的翻轉次數
int n, m; //m行n列
int dirx = ;
int diry = ;
bool inside(int r, int c)
int get_color(int r, int c)
return color % 2;
}int compute()
} for(int i = 0; i < n; i++)
if(get_color(m-1, i) == 1)
return -1;
int res = 0;
for(int i = 0; i < m; i++)
} return res;
}int main()
} int cnt = -1;
for(int i = 0; i < (1 << n); i++)
int tmp = compute(); //計算接下來的翻轉次數
if(tmp >= 0 && (cnt < 0 || tmp < cnt))
} if(cnt < 0)
for(int i = 0; i < m; i++)
} return 0;
}
POJ3279 經典開關問題)
解題思路 如果列舉每乙個格仔的開關,複雜度為o 2 mn 這會超時。但觀察規律可知,只要第一行的開關狀態確定,後面的狀態也都確定了。由此列舉第一行的開關狀態即可。這樣複雜度變為o mn2 n include include include define inf 0x3f3f3f3f using na...
POJ3279 開關後續
描述 乙個n m 的矩陣,每個格仔 有0和1 兩種狀態 每次可 以翻乙個 格仔,並 且此格仔 的上下左 右都要被 翻。n m的矩陣,每個格仔有0和1兩種狀態.每次可以翻乙個格仔,並且此格仔的上下左右都要被翻。n m的矩陣 每個格 子有0和 1兩種狀 態.每次 可以翻一 個格仔,並且此格 子的上下 左...
POJ3279 Fliptile 開關問題
記錄乙個菜逼的成長。挑戰程式設計書上的 pragma comment linker,stack 1024000000,1024000000 include include include include include include include include include include ...