好像看懂为什么WA了,但是不会写
#include<bits/stdc++.h>
using namespace std;
const double eps=1e-7;
int n,maxid;
double gus[110][110],maxx;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n+1;j++){
cin>>gus[i][j];
}
}
for(int i=1;i<=n;i++){
maxid=i;
maxx=gus[i][i];
for(int j=i;j<=n;j++){
if(fabs(gus[j][i])>maxx){
maxid=j;
maxx=fabs(gus[j][i]);
}
}
if(maxid!=i){
for(int j=1;j<=n+1;j++){
swap(gus[i][j],gus[maxid][j]);
}
}
}
/*for(int i=1;i<=n;i++){
for(int j=1;j<=n+1;j++){
cout<<gus[i][j]<<" ";
}
cout<<"\n";
}*/
for(int i=1;i<=n;i++){
if(fabs(gus[i][i])<eps){
cout<<"No Solution\n";
return 0;
}
for(int j=n+1;j>=i;j--){
gus[i][j]/=gus[i][i];
}
for(int j=1;j<=n;j++){
if(i!=j){
for(int k=n+1;k>0;k--){
gus[j][k]-=gus[j][i]*gus[i][k];
}
}
}
/*for(int i=1;i<=n;i++){
for(int j=1;j<=n+1;j++){
cout<<fixed<<setprecision(2)<<gus[i][j]<<"\t";
}
cout<<"\n";
}
cout<<"\n";*/
}
/*for(int i=1;i<=n;i++){
for(int j=1;j<=n+1;j++){
cout<<fixed<<setprecision(2)<<gus[i][j]<<"\t";
}
cout<<"\n";
}
cout<<"\n";*/
for(int i=1;i<=n;i++){
cout<<fixed<<setprecision(2)<<gus[i][n+1]<<"\n";
}
return 0;
}
附:
#18.in
3
1 1 3 4
2 2 3 1
2 1 1 1
#18.out
1.67
-4.67
2.33