2024年1月24日15点49分
正在完成高斯消元板子题
ALL # WA
翻出董晓逐行比对
一眼丁真
遂发现判断无解时括号打歪了
if(fabs(a[i][i]<eps))
蒸乌鱼
解决此问题耗时20min
以上,警示后人
附WA代码
#include<bits/stdc++.h>
using namespace std;
const double eps = 0.000001;
const int N = 105;
double a[N][N];
int n;
bool GaussJordan()
{
for(int i=1;i<=n;i++)
{
int r=i;
for(int k=i;k<=n;k++) if(fabs(a[k][i])>eps) {r=k;break;}
if(r!=i) swap(a[r],a[i]);
if(fabs(a[i][i]<eps)) return 0;//事故多发地段
for(int k=1;k<=n;k++)
{
if(k==i) continue;
double t=a[k][i]/a[i][i];
for(int j=i;j<=n+1;j++) a[k][j]-=t*a[i][j];
}
}
for(int i=1;i<=n;i++) a[i][n+1]/=a[i][i];
return 1;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n+1;j++)
{
cin>>a[i][j];
}
}
if(GaussJordan())
{
for(int i=1;i<=n;i++)
{
printf("%.2lf\n",a[i][n+1]);
}
}
else
{
cout<<"No Solution";
}
return 0;
}
标签:const,WA,fabs,int,double,GaussJordan,警钟
From: https://www.cnblogs.com/yeyou26/p/17990617