当前位置:网站首页>Gauss elimination method and template code
Gauss elimination method and template code
2022-07-04 00:33:00 【Alkali!】
Gauss elimination method for solving linear equations
Ideas and steps

The last one ( The approximate ) Ladder matrix 
Then reduce it to an approximate identity matrix , We can get the solution
Template code
// Background :AcWing 883
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
const int N=110;
const double eps=1e-8; // Do not put double Misspelled int, The reason why it should be less than 1e-8, Because c++ A drawback of floating point numbers , So less than eps when , It can be approximately regarded as 0
double a[N][N]; // Storage augmentation matrix
int n;
int gauss()
{
int r,c; //r Indicates the current line to be processed
for(r=0,c=0;c<n;c++) // Traverse each column
{
int t=r;
for(int i=r;i<n;i++) // Find the row with the largest element in this column
if(fabs(a[i][c])>fabs(a[t][c]))
t=i;
if(fabs(a[t][c])<eps) continue; // If the element is the largest , still 0, Then skip , Go to the next column
for(int i=c;i<=n;i++) swap(a[t][i],a[r][i]); // Put the selected line in “ At the top ” Go to
for(int i=n;i>=c;i--) a[r][i] /=a[r][c]; // Put the first in this line c Into 1
for(int i=r+1;i<n;i++) // Put the second line c Column elimination into 0
if(fabs(a[i][c])>eps)
{
for(int j=n;j>=c;j--)
a[i][j]-=a[i][c]*a[r][j];
}
r++;
}
if(r<n) // If the final step is not strictly complete
{
for(int i=r;i<n;i++)
if(fabs(a[i][n])>eps) //0== Non zero case , unsolvable
return 2;
return 1; //0==0 The situation of , There are infinite solutions
}
for(int i=n-1;i>=0;i--) // Find the solution from bottom to top
for(int j=i+1;j<n;j++)
a[i][n]-=a[j][n]*a[i][j];
return 0;
}
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++)
for(int j=0;j<n+1;j++)
scanf("%lf",&a[i][j]);
int t=gauss();
if(t==2)
printf("No solution");
else if(t==1)
printf("Infinite group solutions");
else
for(int i=0;i<n;i++)
{
if(fabs(a[i][n])<eps)
a[i][n]=0;
printf("%.2lf\n",a[i][n]);
}
return 0;
}
Gauss elimination method for solving XOR linear equations
Ideas and steps
It is consistent with Gauss elimination method in solving linear equations 

Template code
// Background :AcWing 884
#include<iostream>
#include<algorithm>
using namespace std;
const int N=110;
int n;
int a[N][N];
int gauss()
{
int r,c;
for(r=0,c=0;c<n;c++) // Traverse each column
{
int t=r;
for(int i=r;i<n;i++)
if(a[i][c]) // Find No c The first in the column is not 0 All right
{
t=i;
break;
}
if(!a[t][c]) continue; // If it's all 0 了 , Just continue
for(int i=c;i<=n;i++) swap(a[r][i],a[t][i]); // Put this line on top
for(int i=r+1;i<n;i++) // Delete the following line with the selected line , The first c Column elimination as 0
if(a[i][c])
for(int j=c;j<=n;j++)
a[i][j]^=a[r][j];
r++;
}
if(r<n)
{
for(int i=r;i<n;i++)
if(a[i][n])
return 2;
return 1;
}
for(int i=n-1;i>=0;i--)
for(int j=i+1;j<n;j++)
if(a[i][j])
a[i][n]^=a[j][n];
return 0;
}
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++)
for(int j=0;j<n+1;j++)
scanf("%d",&a[i][j]);
int res=gauss();
if(res==2)
printf("No solution");
else if(res==1)
printf("Multiple sets of solutions");
else
for(int i=0;i<n;i++)
printf("%d\n",a[i][n]);
return 0;
}
边栏推荐
- Arc 135 supplementary report
- Software testers, how can you quickly improve your testing skills? Ten minutes to teach you
- Research Report on the scale prediction of China's municipal engineering industry and the prospect of the 14th five year plan 2022-2028
- Interview script of Software Test Engineer
- [software testing] you haven't mastered these real interview questions of big companies?
- AI Challenger 2018 text mining competition related solutions and code summary
- Att & CK actual combat series - red team actual combat - V
- Celebrate the new year | Suihua fire rescue detachment has wonderful cultural activities during the Spring Festival
- The upload experience version of uniapp wechat applet enters the blank page for the first time, and the page data can be seen only after it is refreshed again
- Subgraph isomorphism -subgraph isomorphism
猜你喜欢

Makefile judge custom variables

Report on prospects and future investment recommendations of China's assisted reproductive industry, 2022-2028 Edition

From functional testing to automated testing, how did I successfully transform my salary to 15K +?

Similarities and differences of text similarity between Jaccard and cosine

Recommendation of knowledge base management system

It is the most difficult to teach AI to play iron fist frame by frame. Now arcade game lovers have something

Struct in linked list

Yyds dry goods inventory three JS source code interpretation - getobjectbyproperty method

It is forbidden to splice SQL in code

NLP Chinese corpus project: large scale Chinese natural language processing corpus
随机推荐
It is forbidden to splice SQL in code
MySQL winter vacation self-study 2022 12 (2)
Zipper table in data warehouse (compressed storage)
How to be a professional software testing engineer? Listen to the byte five year old test
AI Challenger 2018 text mining competition related solutions and code summary
[Mongodb] 2. Use mongodb --------- use compass
Global and Chinese market of underwater bags 2022-2028: Research Report on technology, participants, trends, market size and share
P3371 [template] single source shortest path (weakened version)
Idea a method for starting multiple instances of a service
What insurance products should be bought for the elderly?
Iclr2022: how does AI recognize "things I haven't seen"?
Introduction to thread pool
Five high-frequency questions were selected from the 200 questions raised by 3000 test engineers
Self study software testing. To what extent can you go out and find a job?
The upload experience version of uniapp wechat applet enters the blank page for the first time, and the page data can be seen only after it is refreshed again
Sorry, Tencent I also refused
Speed up the energy Internet of things. What can low-power Internet of things technology represented by Zeta do?
P1656 bombing Railway
想请教一下,十大劵商如何开户?在线开户是安全么?
Gossip about redis source code 82