求助,#4硬是过不去
查看原帖
求助,#4硬是过不去
230804
Durancer楼主2021/1/16 08:51

不会判断无解和无数解QWQ

/*
2
0 2 3
0 0 0

显然是0 
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#include<cmath>
using namespace std;
const int N=1e2+9;
double a[N][N];
int n;
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n+1;j++)
			scanf("%lf",&a[i][j]);
	for(int i=1;i<=n;i++)
	{	
		
		int maxn=i;
		for(int j=i+1;j<=n;j++)
			if(fabs(a[j][i])>fabs(a[maxn][i]))
				maxn=j;
		for(int j=1;j<=n+1;j++)
			swap(a[i][j],a[maxn][j]);
		if(!a[i][i]) continue;
		
		for(int j=1;j<=n;j++)
		{	
			//cout<<"zsf ak ioi"<<endl;
			if(j==i) continue;
			double tmp=a[j][i]/a[i][i];
			for(int k=i+1;k<=n+1;k++)
				a[j][k]-=a[i][k]*tmp;
		}
	}
	
	bool flag=false;
	for(int i=1;i<=n;i++)
		if(!a[i][i])
		{
			if(a[i][n+1])
			{
				cout<<-1<<endl;
				return 0;
			}
			if(!a[i][n+1])
			flag=true;
		}
	if(flag) cout<<0<<endl;
	else for(int i=1;i<=n;i++)
		printf("x%d=%.2lf\n",i,a[i][n+1]/a[i][i]);
	return 0;
}
2021/1/16 08:51
加载中...