50分求调,玄关
查看原帖
50分求调,玄关
1064299
star_light_yuer楼主2025/7/23 22:48
#include<bits/stdc++.h>
using namespace std;
const int N=305;
const double eps=1e-2;
double a[N][N];
int n;
int guass()
{
	int c=1,r=1;
	for(;c<=n; c++)
	{
		int t=r;
		for(int i=r; i<=n; i++)
		{
			if(fabs(a[i][c])) fabs(a[t][c]);
			t=i;
		}
		if(fabs(a[t][c])<eps) continue;
		for(int i=c; i<=n+1; i++)
		{
			swap(a[t][i],a[r][i]);
		}
		for(int i=n+1; i>=c; i--)
		{
			a[r][i]/=a[r][c];
		 } 
		 for(int i=r+1; i<=n; i++)
		 {
		     if(fabs(a[i][c])>eps)
		     {
		     	for(int j=n+1; j>=c; j--)
		     	{
		     		a[i][j]-=a[r][j]*a[i][c];
				 }
			 }
			
		 }
		  r++;
	}

	if(r<n+1)
	{
		for(int i=r; i<=n; i++)
		{
			if(fabs(a[i][n+1])>eps) return 2;
		}
		return 1;
	 }
	  for(int i=n-1; i>=1; i--)
	{
		for(int j=i+1; j<=n; j++)
		{
			a[i][n+1]-=a[i][j]*a[j][n+1];
		}
	}	
	return 0; 
	

}
int main()
{
	cin>>n;
	for(int i=1; i<=n; i++)
	{
		for(int j=1; j<=n+1; j++)
		{
			cin>>a[i][j];
		}
	}
	int t=guass();
	if(t==2) cout<<-1;
	else if(t==1) cout<<0;
	else if(t==0)
	{
		for(int i=1; i<=n; i++)
		{
			if(fabs(a[i][n+1])<eps)   a[i][n+1]=0;
			cout<<'x'<<i<<'='<<fixed<<setprecision(2)<<a[i][n+1]<<endl;
		}
	}
	return 0;
	}
2025/7/23 22:48
加载中...