80pts无解错判无穷解求助
查看原帖
80pts无解错判无穷解求助
716099
lovely_hyzhuo楼主2024/4/14 17:12
#include<bits/stdc++.h>
const double eps=1e-7;
using namespace std;
int n;
double a[1010][1010];
bool gauss()
{
	int now=1,to;
	double t;
	for(int i=1;i<=n;i++)
	{
		for(to=now;to<=n;to++)
			if(fabs(a[to][i])>eps)
				break;
		if(to>n)
			continue;
		if(to!=now)
			for(int j=1;j<=n+1;j++)
				swap(a[to][j],a[now][j]);
		t=a[now][i];
		for(int j=1;j<=n+1;j++)
			a[now][j]/=t;
		for(int j=1;j<=n;j++)
		{
			if(j!=now)
			{
				t=a[j][i];
				for(int k=1;k<=n+1;k++)
					a[j][k]-=t*a[now][k];
			}
		}
		now++;
	}
	return now>n;
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n+1;j++)
			cin>>a[i][j];
	if(gauss())
	{
		for(int i=1;i<=n;i++)
			if(abs(a[i][i])==0)
			{
				cout<<"-1";
				return 0;
			}
		for(int i=1;i<=n;i++)
			printf("x%d=%.2lf\n",i,a[i][n+1]/a[i][i]);
	}
	else
		cout<<"0";
	return 0;
}
2024/4/14 17:12
加载中...