高斯-约旦消元法无穷解错判为无解80分WA#1#4求调
查看原帖
高斯-约旦消元法无穷解错判为无解80分WA#1#4求调
191387
Φρανκ楼主2022/11/9 08:40
#include <bits/stdc++.h>
using namespace std;
int n, t;
double a[51][52], res;
int 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++)
	{
		t=i;
		for(int j=i; j<=n; j++)
			if(abs(a[j][i])>abs(a[t][i]))
				t=j;
		if(a[t][i]==0)
			continue;
		for(int j=1; j<=n+1; j++)
			swap(a[i][j], a[t][j]);
		for(int j=1; j<=n; j++)
			if(j!=i)
			{
				for(int k=1; k<=n+1; k++)
					if(k!=i)
						a[j][k]-=a[i][k]*a[j][i]/a[i][i];
				a[j][i]=0;
			}
	}
//	for(int i=1; i<=n; i++)
//	{
//		for(int j=1; j<=n+1; j++)
//			cout<<a[i][j]<<" ";
//		cout<<endl;
//	}
	for(int i=1; i<=n; i++)
		if(a[i][i]==0 && int(100*a[i][n+1])!=0)
		{
			cout<<-1;
			return 0;
		} 
		else if(a[i][i]==0 && a[i][n+1]==0)
		{
			cout<<0;
			return 0; 
		}
	cout<<fixed<<setprecision(2);
	for(int i=1; i<=n; i++)
		if(a[i][n+1]/a[i][i]>-0.0001 && a[i][n+1]/a[i][i]<0.0001)
			cout<<"x"<<i<<"="<<0.00<<endl;
		else
			cout<<"x"<<i<<"="<<a[i][n+1]/a[i][i]<<endl;
	return 0;
}

感谢各位!

2022/11/9 08:40
加载中...