高斯消元集合

2021-08-09 13:21:44 字數 2124 閱讀 8119

//高斯消元法解異或方程組,返回方程解得個數。

const

intn = 30;  

inta[n][n];

//關係矩陣

intgauss(

intequ,

intvar)  

}  if

(max_r!=row)  

if(a[row][col]==0)  

for(

inti=row+1;i

if(a[i][col]==0)

continue

;//如果某行已為0,則跳過本行

for(

intj=col;j<=var;j++)  

}  }  

for(

inti=row;i

if(a[i][col]!=0)

return

-1;  

}  return

1<

//可能會用long long  1ll<

}  

[cpp]

view plain

copy

//高斯消元法解異或方程組(列舉所有解)

const

intn = 30;  

intn;  

inta[n][n];  

intmajor[n];

//記錄主元所在位置

intx[n];

//臨時解 x=;

void

dfs_freevar(

intn,

intr,

intvar)  

if(var==major[r])  

x[var]=y;  

dfs_freevar(n,r-1, var-1) ;  

}  else

}  }  int

gauss(

intequ,

intvar)  

}  if

(a[max_r][col]==0)  

if(max_r!=row)  

for(

intj=0;j<=var;j++)  

swap(a[row][j],a[max_r][j]);  

for(

inti=row+1;i

if(a[i][col]==0)

continue

;  for

(int

j=col;j<=var;j++)  

}  major[row]=col;  

}  for

(int

i=row;i

//無解的情況

if(a[i][col]!=0)

return

-1;  

}  dfs_freevar(n,row-1,col-1);  

return

1;  

}  

[cpp]

view plain

copy

//浮點型只有唯一解時可計算

const

intn = 300;  

const

intinf=0x7fffffff;  

#define eps 1e-9

double

a[n][n];  

double

x[n];  

void

gauss(

intequ,

intvar)  

}  if

(max_r!=row)  

for(

intj=0;j

swap(a[row][j],a[max_r][j]);  

for(

inti=row+1;i

if(fabs(a[i][col])continue

;  double

tmp=-a[i][col]/a[row][col];  

for(

intj=col;j

a[i][j]+=tmp*a[row][j];  

}  }  

}  for

(int

i=var-1;i>=0;i--)  

x[i]=(a[i][var]-tmp)/a[i][i];  

}  }  

高斯消元 浮點高斯消元

浮點數高斯消元 問題描述 給出乙個線性方程組,有n個方程組,m個未知數。解這個線性方程組。輸入格式 第1行 2個整數n和m,n,m 400,且n不一定等於m 接下來n行,每行m 1個整數,表示乙個方程的m個未知數的係數和常數 輸出格式 如果無解,輸出 no solution 如果有唯一解,輸出m行,...

矩陣消元 高斯消元

安利一波高斯消元的部落格,內容很詳細。看完這個相信你已經理解了大概,高斯消元求線性方程組,在學習線性代數 大學課程 的時候我們都接觸過。原理是先把執行緒組轉換成矩陣,然後把它等價變換成上三角矩陣,這樣從下到上依次可以求出解集。高斯消元模板 模板題 include define n 205 using...

矩陣乘 高斯消元專題小結 高斯消元

i p其它題太水了就不寫了,這裡說一下o和p。我太懶不想寫 op這兩個題是高斯消元求期望的題。對於p題,求從 點到 點的步數期望,先從 點bfs一遍找到所有可以到達的點,對於可達點每個點是乙個變數。因為終點有任意多而起點只有乙個,這裡可以反過來求從任意乙個終點走到起點的期望。於是對於每乙個終點的期望...