對於高斯消元,最初的接觸是行最簡階梯矩陣的化簡。
我認為只分成兩個部分:1:向前步驟 2:向後步驟
前者是往下推,後者是回代.
in my opinion, pushing down is all about findingthe pivot entry, determining the number offree entries, and determining whether there is asolutionon the last row.
應用(個(se)人(se)總(fa)結(dou)):
for example:
poj 1830 開關問題
每乙個燈有兩種狀態,分別用0和1表示,當一種燈的狀態改變的時候,可能對與它關聯的燈的狀態造成影響.
我們可以使用0和1首先構造出來乙個表示每盞燈狀態的列向量x=(x1 x2 x3....xn). 再構造乙個係數矩陣 y=(y1 y2 .... yn)以及乙個變換矩陣a.滿足關係a*y=x.這裡變換矩陣第i行第j列代表的是第j盞燈會改變第i盞燈的狀態(1代表i的改變對j有影響,0代表無影響).
(之所以這樣構造是因為我們想通過某種方法,求出方程的解,使得這個求出的解剛好就是題目中所要求的。)
係數矩陣存放解的係數,大小為n*1,規定每盞燈最多只能進行一次開關操作(個人認為題面這裡說的不是太清楚,應該是x改變引發y改變,此時y的改變不算是一次開關操作),那麼就要進行整體操作,a中的j列剛好就是j對1-n的影響,i行算出來的最後結果剛好就是這個燈最後的狀態,那麼我們可以對於狀態改變的燈設定為1,對於狀態沒有改變的燈的狀態設定為0(x矩陣).然後高斯消元就行了.
對於樣例1:
存在兩個自由變元,每個自由變元有兩個數字可以選擇,結果為pow(2,自由變元個數)
#include#include#include#include#include#includeusing namespace std;
typedef long long ll;
const int maxn=50;
void debug()
int num1[maxn],num2[maxn];
int n;
int equ,var;
int a[maxn][maxn];
int x[maxn];
int free_x[maxn];
int free_num;
int gauss()
}if(a[max_r][col]==0)
if(max_r!=k)
int num1[maxn],num2[maxn];
int n;
int equ,var;
int a[maxn][maxn];
int x[maxn];
int free_x[maxn];
int free_num;
int gauss()
}if(a[max_r][col]==0)
if(max_r!=k)
for(int i=0;i<5;++i)
if(i<4)
if(j>0)
if(j<5)}}
equ=var=30;
gauss();
printf("puzzle #%d\n",casee++);
for(int i=0;i<5;++i)}}
return 0;
}
法2:二進位制列舉
第一行有6個元素,一共有2^6中選擇的情況,二進位制列舉第一行要改變的方式.
然後從第二行開始,每次通過上一行哪個位置有1進行關燈.
最後特判一下最後一行是不是全部都是0,如果是的話就輸出,如果不是的話就繼續列舉.
#include#include#include#include#include#includeusing namespace std;
typedef long long ll;
int putss[10][10];
void judge(int x,int y)
else if(y==6)
else
if(x==1)
else if(x>1&&x<5)
else
}void init()
}}void solve()
}solve();
}return 0;
}
高斯消元 浮點高斯消元
浮點數高斯消元 問題描述 給出乙個線性方程組,有n個方程組,m個未知數。解這個線性方程組。輸入格式 第1行 2個整數n和m,n,m 400,且n不一定等於m 接下來n行,每行m 1個整數,表示乙個方程的m個未知數的係數和常數 輸出格式 如果無解,輸出 no solution 如果有唯一解,輸出m行,...
開關問題 高斯消元
description 有n個相同的開關,每個開關都與某些開關有著聯絡,每當你開啟或者關閉某個開關的時候,其他的與此開關相關聯的 開關也會相應地發生變化,即這些相聯絡的開關的狀態如果原來為開就變為關,如果為關就變為開。你的目標是經過 若干次開關操作後使得最後n個開關達到乙個特定的狀態。對於任意乙個開...
矩陣消元 高斯消元
安利一波高斯消元的部落格,內容很詳細。看完這個相信你已經理解了大概,高斯消元求線性方程組,在學習線性代數 大學課程 的時候我們都接觸過。原理是先把執行緒組轉換成矩陣,然後把它等價變換成上三角矩陣,這樣從下到上依次可以求出解集。高斯消元模板 模板題 include define n 205 using...