【题解】P3389 【模板】高斯消元法
高斯消元的方法不再自己写了,百度百科和这篇文章写的已经很清楚了
高斯-若尔当消元法-百度百科
数论小白都能看懂的线性方程组及其解法
直接上代码
#include<bits/stdc++.h>
using namespace std;
double a[206][206];
int main()
{
int n;
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 k=1;k<=n;k++)
{
if(a[k][k]!=1&&a[k][k]!=0)//这地方要特判被除数是否等于0,不然会WA掉的
{
double t=a[k][k];
for(int i=1;i<=n;i++)
for(int j=1;j<=n+1;j++)a[i][j]/=t;
}
for(int i=1;i<=n;i++)
{
double temp=a[i][k];
for(int j=1;j<=n+1;j++)
{
if(i!=k&&a[k][k]!=0)
{
a[i][j]-=(temp/a[k][k])*a[k][j];
}
}
}
/* for(int i=1;i<=n;i++)
{
for(int j=1;j<=n+1;j++)
{
printf("%.2f ",a[i][j]);
}
printf("\n");
}
*/
}
for(int i=1;i<=n;i++)
{
if(!a[i][i]){printf("No Solution");return 0;}
}
for(int i=1;i<=n;i++)
{
printf("%.2f\n",a[i][n+1]/a[i][i]);
}
return 0;
}
不过百度百科说朴素高斯消元要比高斯-约旦算法效率高
咱也没试过,也不知道
这玩意数据范围还不到100其实效率也差不是很多吧