#12#13过不了求条
查看原帖
#12#13过不了求条
785639
xuchuhan楼主2024/4/16 19:13

rt

#include<bits/stdc++.h>
using namespace std;
const int N=105;
const double eps=1e-10;
int n,num;
double a[N][N];
void Guass(){
	for(int j=1;j<=n;j++){
		int pos=0;
		for(int i=j;i<=n;i++)
			if(fabs(a[i][j])>fabs(a[pos][j]))
				pos=i;
		if(fabs(a[pos][j])<eps)
			continue;
		for(int i=1;i<=n+1;i++)
			swap(a[pos][i],a[j][i]);
		for(int i=n+1;i>=j;i--)
			a[j][i]=a[j][i]*1.0/a[j][j];
		for(int i=1;i<=n;i++)
			if(i!=j)
				for(int k=n+1;k>=j;k--)
					a[i][k]-=a[j][k]*a[i][j];
		num++;
	}
	if(num==n){
		for(int i=1;i<=n;i++)
			printf("x%d=%.2lf\n",i,a[i][n+1]);
		exit(0);
	}
	else{
		for(int i=1;i<=n;i++){
			bool flg=0;
			for(int j=1;j<=n;j++)
				if(fabs(a[i][j])>eps)
					flg=1;
			if(!flg&&fabs(a[i][n+1])>eps){
				cout<<"-1";
				exit(0);
			}
		}
		cout<<"0";
		exit(0);
	}
	return;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n+1;j++)
			cin>>a[i][j];
	Guass();
	return 0;
}
2024/4/16 19:13
加载中...