#include<bits/stdc++.h>usingnamespace std;constint N =1e4+10;constdouble eps =1e-7;int n, m, K;double a[N][N];intGass(int n){int c, r;//col rowfor(c =1, r =1; c <= n;++c){int t = r;for(int i = r; i <= n;++i){if(fabs(a[i][c])>fabs(a[t][c]))
t = i;//找到从r~n行里 首元素最大的那一行}if(fabs(a[t][c])< eps){continue;//后面的解全部都是0 不是无解就是无穷解}swap(a[t], a[r]);for(int i = n +1; i >= c;--i){
a[r][i]/= a[r][c];//该行所有元素除以该行首元素系数}for(int i = r +1; i <= n;++i){if(fabs(a[i][c])> eps){for(int j = n +1; j >= c;--j){//必须从后往前 否则 先算首元素会影响后面的计算
a[i][j]-= a[r][j]* a[i][c];}}}
r++;//换下一行}if(r != n +1){//没有计算到最后一行for(int i = r; i <= n;++i){if(fabs(a[i][n +1])> eps)return2;//有多解}return0;//无解}for(int i = n; i;--i){for(int j = i +1; j <= n;++j){
a[i][n +1]-= a[j][n +1]* a[i][j];}}return1;//有唯一解}intmain(){
ios::sync_with_stdio(0);
cin >> n;for(int i =1; i <= n;++i){for(int j =1; j <= n +1;++j){
cin >> a[i][j];}}int ans =Gass(n);if(ans ==0){//无解
cout <<"No solution"<< endl;}elseif(ans ==1){//有唯一解for(int i =1; i <= n;++i){printf("%.2f\n", a[i][n +1]);}}elseif(ans ==2){//有无穷解//cout << "Infinite group solutions" << endl;
cout <<"No solution"<< endl;}return0;}
高斯消元解线性方程#include <bits/stdc++.h>using namespace std;const int N = 1e4 + 10;const double eps = 1e-7;int n, m, K;double a[N][N];int Gass(int n) { int c, r;//col row for (c = 1, r ...