可能就我一个一直WA#10的吧
查看原帖
可能就我一个一直WA#10的吧
61158
AzusidNya楼主2021/6/18 12:44

rt。求助

#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
double Gcc[100][100],result[100];
int n;
int check(int i){
	bool freedom=false;
	for(int j=1; j<=n; j++)
		if(fabs(Gcc[i][j])>1e-8)
			freedom=true;
	if(!freedom){
//		cout<<result[i]<<"\n";
		if(fabs(result[i])>1e-8)
			return -1;
		else
			return 0;
	}
	else
		return 1;
}
int gsxy(){
	for(int i=1; i<=n; i++){
		for(int j=i; j<=n; j++)
			if(fabs(Gcc[j][i])>1e-8){
				for(int k=1; k<=n; k++)
					swap(Gcc[j][k],Gcc[i][k]);
				swap(result[i],result[j]);
			}	
		if(Gcc[i][i]<=1e-8){
			int p=check(i);
			if(p!=1)
				return p;
		}
		for(int j=1; j<=n; j++)
			if(j!=i&&fabs(Gcc[i][i])>1e-8){
				double z=Gcc[j][i]/Gcc[i][i];
				for(int k=i; k<=n; k++)
					Gcc[j][k]=Gcc[j][k]-Gcc[i][k]*z;
				result[j]=result[j]-result[i]*z;
	 		}
	}
	for(int i=1; i<=n; i++){
		int p=check(i);
		if(p!=1)
			return p; 
	}
	return 1;
}
int main(){
	cin>>n;
	for(int i=1; i<=n; i++){
		for(int j=1; j<=n; j++)
			cin>>Gcc[i][j];
		cin>>result[i];
	}
	int v=gsxy();
	if(v!=1){
		cout<<v;
		return 0;
	}
	for(int i=1; i<=n; i++)
		printf("x%d=%.2lf\n",i,(result[i]/Gcc[i][i]+1e-6));
	return 0;
}
2021/6/18 12:44
加载中...