90pts求助
查看原帖
90pts求助
285617
黑影洞人楼主2023/8/16 09:05
#include<cstdio>
#include<algorithm>
#include<cmath>
#define N 55
using namespace std;
const double eps=1e-10;
int n;
double a[N][N];
void guess(){
	for(int i=1;i<=n;i++){
		int id=i;
		for(int j=i;j<=n;j++)if(fabs(a[j][i])>fabs(a[id][i]))id=j;
		if(fabs(a[id][i])>eps)for(int j=i;j<=n+1;j++)swap(a[i][j],a[id][j]);
		else continue;
		for(int j=n+1;j>=i;j--)a[i][j]/=a[i][i];
		for(int j=1;j<=n;j++){
			if(i==j)continue;
			for(int k=n+1;k>=i;k--)a[j][k]-=a[j][i]*a[i][k];
		}
	}
	for(int i=1;i<=n;i++)if(fabs(a[i][i])<eps&&fabs(a[i][n+1])>eps)return puts("-1"),void();
	for(int i=1;i<=n;i++)if(fabs(a[i][i])<eps)return puts("0"),void();
	for(int i=1;i<=n;i++)printf("x%d=%.2lf\n",i,a[i][n+1]);
}
signed main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++)for(int j=1;j<=n+1;j++)scanf("%lf",&a[i][j]);
	guess();
	return 0;
}



2023/8/16 09:05
加载中...