#include<bits/stdc++.h>
using namespace std;
double max(double a,double b)
{
if(a>=b) return a;
if(a<b) return b;
}
int n;
double a[1010][1010];
double a1[1010][1010];
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n+1;j++)
{
scanf("%lf",&a[i][j]);
}
}
for(int i=1;i<=n;i++)
{
int maxx=-INT_MAX,l;
for(int j=i;j<=n;j++)
{
if(abs(a[j][i])>maxx)
{
maxx=abs(a[j][i]);
l=j;
}
}
for(int k=1;k<=n+1;k++)
{
swap(a[i][k],a[l][k]);
}
if(a[i][i]==0)
{
cout<<"No Solution"<<endl;
return 0;
}
for(int j=i+1;j<=n+1;++j)
{
a[i][j]/=a[i][i];
}
a[i][i]=1;
for(int j=i+1;j<=n;j++)
{
a1[j][i]=a[j][i];
}
for(int j=i+1;j<=n;++j)
{
for(int k=i;k<=n+1;++k)
{
a[j][k]-=a[i][k]*a1[j][i];
}
}
}
for(int i=n-1;i>=1;i--)
{
for(int j=i+1;j<=n;j++)
{
a[i][n+1]-=a[i][j]*a[j][n+1];
}
}
for(int i=1;i<=n;++i)
{
printf("%.2f\n",a[i][n+1]);
}
return 0;
}
标签:int,double,高斯消,模板,P3389,元法
From: https://www.cnblogs.com/wenzhihao2023/p/17986802