校賽預選卡了一道高斯消元的題,找到資料學習了下,a個模板題熟練熟練。寫錯乙個數字坑了好久,悲催。
題意:給定5*6的燈陣,0為關1為開,每次開關(x,y)會同時開關(x-1,y)(x+1,y)(x,y-1)(x,y+1)四燈(出界不予討論即可),給定初始燈陣,求使所有燈都關閉的開燈方法。
分析:從上往下從左往右計數,第i個燈的開關情況記為ai,ai=0不動,ai=1開一次。每個燈的最終狀態由它和它周圍的燈開關狀態確定。
對每個燈建立30元一次異或方程;
例如:
0 1 1 0 1 0
1 0 0 1 1 1
0 0 1 0 0 1
1 0 0 1 0 1
0 1 1 1 0 0
第1個方程為a1^a2^a7=0
第2個方程為a1^a2^a3^a8=1
以此類推建立30元1次異或方程組,解之即可。
解方程用高斯消元,不多說上**。
#include
#include
using namespace std;
int jz[31][32];
void swap(int a,int b)
return;
}int main()
/*for(int
x=1;x
<=30;x++)
printf("\n");*/
for(int
x=1;x
<=30;x++)
}if(!ok)continue;
swap(x,po);
for(int x1=1;x1<=30;x1++)}}
/*for(int
x=1;x
<=30;x++)
*/printf("puzzle #%d\n",i);
for(int
x=1;x
<=5;x++)
printf("%d\n",jz[6
*x][31]);
}
}return
0;}
poj 1222 (高斯消元)
1 高斯消元法求解 適用於01方矩陣的問題,不適用在解線性方程組中 首先介紹一下怎樣用高斯消元法解題!這個遊戲的名字叫做lights out。乙個板子上面有mxn個按鈕,按鈕也是燈。每次按下乙個按鈕,這個按鈕和它的上下左右相鄰按鈕將同時切換各自的亮滅狀態。給你乙個初始狀態,請給出一種方法,按某些按鈕...
poj 1222 高斯消元
第一次寫高斯消元 題意很簡單 就是是全部燈變暗,一盞燈開關會使周圍的燈變化,初始狀態給了。每盞燈就是乙個x a就是相關關係 就是求 ax b 的解 自己寫的模版有點搓,可以去別的文章去看看 優美點的 include include include include include using name...
高斯消元 poj 1222
高斯消元求唯一解集x 關鍵是初始化構造係數矩陣,有了增廣矩陣套模板即可 poj 1222 高斯消元 題意 類似於翻轉棋,按一下上下中左右翻轉,給定初始狀態,問回到全0的狀態的按鍵方案 思路 對於每個位置,倒著想,初始為0,上下中左右加起來為初始狀態,每乙個位置皆如此。30個位置,30個變數,30個方...