題意
傳送門 poj 1222
題解列舉第一行的開關是否翻轉的狀態,此時決定 l0j
l_l0
j的狀態的只有 l1j
l_l1
j乙個開關,依次類推可以求出所有的開關翻轉狀態。對於列舉的每乙個狀態,判斷最後一行是否全零即可判斷該方案是否可行。
#include
#include
#include
#include
#include
#include
#define min(a,b) (((a) < (b)) ? (a) : (b))
#define max(a,b) (((a) > (b)) ? (a) : (b))
#define abs(x) ((x) < 0 ? -(x) : (x))
#define inf 0x3f3f3f3f
#define delta 0.85
#define eps 1e-5
#define pi 3.14159265358979323846
#define max_n 20
using
namespace std;
const
int dx[5]
=;const
int dy[5]
=;const
int r =
5, c =6;
int l[r]
[c];
int flip[r]
[c];
// 求 (x, y) 位置開關狀態
intget
(int x,
int y)
}return s;
}int
main()
}// 列舉第一行所有狀態
for(
int i =
0; i <
1<< c; i++)}
int s =0;
for(
int y =
0; y < c; y++
) s |
=get
(r -
1, y);if
(s ==0)
}break;}
}}return0;
}
poj1222開關問題, 高斯消元
題意 給個5x6的矩陣,只有0和1 然後叫你將1全部翻成0 理解 直接就是開關問題啦.列舉第一行的情況,推出所有.不過我自己竟然沒考慮到0的情況.看討論說可以用高斯消元法做 但我並不會.得學習下 看了大神的 發現高斯消元有點麻煩 它是根據某座標與其他座標的關係來列方程 共30個方程,30個未知數.然...
POJ1222熄燈問題
問題描述 程式 思路1 列舉所有可能的開關狀態,對每個狀態計算下最後燈的情況,看是否都熄滅 每種按鈕有兩種狀態,一共有30個開關,那麼狀態數是2的30次方,太多不可取 思路2 如何減少列舉的數目呢?如果存在某個區域性,一旦這個區域性狀態被確定後,那麼剩餘其他部分的狀態只能 是確定的一種或者不多的n種...
POJ 1222 開關問題高斯消元法
乙個01矩陣,表示燈的亮滅狀態,每次操作可以改變乙個十字形狀內的五個燈的狀態。問能否將所有燈熄滅。最後輸出開關的狀態。思路 開燈關燈問題,5 6的燈陣,將每乙個位置上開關狀態看做乙個變元,30個變元,而對於30個位置的燈的狀態當成開關狀態的解,列出30個異或方程,高斯消元解方程即可 增廣矩陣 對於每...