2455线性方程组一题,只有60分的弱小的我...
球球各位解答
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int N=55;
const int eps=1e-8;
int n;
double ans[N],a[N][N];
void Gauss(){
for(int i=1;i<=n;i++){
int r=i;
for(int j=i+1;j<=n;j++){
if(fabs(a[j][i])>fabs(a[r][i]))
r=j;
}
if(fabs(a[r][i])<eps){
cout<<"-1"<<endl;
return;
}
if(r!=i) swap(a[r],a[i]);
double d=a[i][i];
for(int j=i;j<=n+1;j++){
a[i][j]/=d;
}
for(int j=i+1;j<=n;j++){
d=a[j][i];
for(int k=i;k<=n+1;k++){
a[j][k]-=a[i][k]*d;
}
}
}
ans[n]=a[n][n+1];
for(int i=n-1;i>=1;i--){
if(a[i][n+1]==0){
cout<<"0"<<endl;
return;
}
ans[i]=a[i][n+1];
for(int j=i+1;j<=n;j++){
ans[i]-=ans[j]*a[i][j];
}
}
for(int i=1;i<=n;i++){
cout<<"x"<<i<<"=";
printf("%.2f\n",ans[i]);
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n+1;j++){
cin>>a[i][j];
}
}
Gauss();
return 0;
}