poj 1830 開關問題 高斯消元

2021-06-17 22:16:27 字數 784 閱讀 5752

題意是 給一些開關的初始狀態 0 或1 ,在給出終止狀態, 在給出相關的變化規則,規則: x 變化 則  y 也變 , x y 讀入。

輸出有多少種開關的撥動情況,使初始狀態變成終止狀態。

此問題  很容易轉化成  高斯消元 解 異或方程組。

t =  方程組的自由化的個數,則結果就是  2^t .

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

const int maxn=32;

int a[maxn][maxn];//增廣矩陣

int x[maxn];//解集

bool free_x[maxn];//標記是否是不確定的變元

void debug(int equ,int var)

cout << endl;

}cout << endl;

}// 高斯消元法解方程組(gauss-jordan elimination).(-2表示有浮點數解,但無整數解,

//-1表示無解,0表示唯一解,大於0表示無窮解,並返回自由變元的個數)

//有equ個方程,var個變元。增廣矩陣行數為equ,分別為0到equ-1,列數為var+1,分別為0到var.

int gauss(int equ,int var)

//轉換為階梯陣.

col=0; // 當前處理的列

for(k = 0;k < equ && col < var;k++,col++)

if(max_r!=k)

for(int i=0;i

POJ 1830 開關問題 高斯消元

開關問題 time limit 1000ms memory limit 30000k total submissions 3390 accepted 1143 description 有n個相同的開關,每個開關都與某些開關有著聯絡,每當你開啟或者關閉某個開關的時候,其他的與此開關相關聯的開關也會相應...

poj 1830 開關問題(高斯消元)

終止狀態是從初始狀態由開關組合影響而形成的,那麼就有乙個等式使得初始狀態可以到達終止狀態,例如a,b,c三個開關 e a xa mp a a xb mp a b xc map a c s a e b xa mp b a xb mp b b xc map b c s b e c xa mp c a x...

poj 1830 開關問題 高斯消元

題意 給出一些開關互相影響的關係,問從開關的初始狀態到結束狀態有多少種變換的方法。題解 對於每個開關可能會受1.i某寫開關的影響,因此對於開關i列出乙個列向量,列向量每個元素只有1或0,表示某個開關是否影響這個i開關,這樣就n個開關組合成乙個矩陣,結束狀態也是乙個列向量,這樣就可以用高斯消元求解解的...