高斯消元90pts求条
查看原帖
高斯消元90pts求条
1164775
Jadonyzx楼主2024/3/27 20:34
#include<bits/stdc++.h>
using namespace std;
long double a[60][60],ans[60];
int n,danger[60],cnt,czr;
long double Abs(long double ccf){
	if(ccf<-0.0000000001)return -ccf;
	return ccf;
}
signed main(){
	cin>>n;
	for(int i=1;i<=n;++i)
	for(int j=1;j<=n+1;++j)
	cin>>a[i][j];
	for(int i=1;i<=n;++i){
		long double maxx=Abs(a[i][i]);
		int id=i;
		for(int j=i+1;j<=n;++j){if(Abs(a[j][i])>maxx){maxx=Abs(a[j][i]);id=j;}}
		if(Abs(maxx)<=0.000000000001)continue;
		long double chu=a[id][i];
		if(chu!=0)for(int j=1;j<=n+1;++j)if(a[id][j]!=0)a[id][j]=a[id][j]*1.000000/chu;
		a[id][i]=1.000;
		for(int j=1;j<=n+1;++j)swap(a[id][j],a[i][j]);
		for(int j=1;j<=n;++j){
			if(j==i)continue;
			long double ch=a[j][i]*1.000000;
			for(int k=1;k<=n+1;++k)
			{a[j][k]-=ch*a[i][k];}
			a[j][i]=0;
		}
		++czr;
	}
	if(czr<n){
		for(int i=1;i<=n;++i){
			if(a[i][i])continue;
			if(a[i][n+1]>=0.0001){
				cout<<-1;
				return 0;
			}
		}
		cout<<0;
		return 0;
	}
	for(int i=1;i<=n;++i)cout<<'x'<<i<<'='<<fixed<<setprecision(2)<<a[i][n+1]+0.00000000001<<'\n';
	return 0;
}
2024/3/27 20:34
加载中...