charliegong @ 2021-10-21 23:30:30
RT
#include<iostream>
#define maxn 60
#define d double
#define eps 1e-10
using namespace std;
d a[maxn][maxn];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n+1;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++){
int maxx=i;
for(int j=i;j<=n;j++){
if(a[j][i]>a[maxx][i]){
maxx=j;
}
}
for(int j=1;j<=n+1;j++){
swap(a[i][j],a[maxx][j]);
}
d k=a[i][i];
for(int j=1;j<=n+1;j++){
a[i][j]/=k;
}
for(int j=1;j<=n;j++){
if(i!=j){
d x=a[j][i];
for(int k=1;k<=n+1;k++){
a[j][k]-=x*a[i][k];
}
}
}
// for(int j=1;j<=n;j++){
// for(int k=1;k<=n;k++){
// cout<<a[j][k]<<" ";
// }
// cout<<"="<<a[j][n+1]<<endl;
// }
// cout<<endl;
}
int flag=1;//然而这错的很离谱
for(int i=1;i<=n;i++){
if(a[i][i]<=eps){
if(a[i][n+1]>eps)flag=-1;
else flag=0;
}
}
if(flag!=1) {
cout<<flag;
return 0;
}
for(int i=1;i<=n;i++){
printf("x%d=%.2lf\n",i,a[i][n+1]);
}
return 0;
}
by Rui_R @ 2021-10-22 09:51:26
建议去看题解