80pts infinity->unique求助
查看原帖
80pts infinity->unique求助
922691
Hisy楼主2024/4/16 19:25
#include<algorithm>
#include<cstdio>
#include<cmath>
#define eps 1e-6
double matrix[55][55];
int size;
inline int gauss(void){
	int row=0,col=0;
	for(;col<size;++col){
		int top=row;
		for(int iter=row;iter<size;++iter){
			if(fabs(matrix[iter][col])>fabs(matrix[top][col])){
				top=iter;
			};
		};
		if(fabs(matrix[top][col])<eps){
			continue;
		};
		for(int iter=col;iter<=size;++iter){
			std::swap(matrix[top][iter],matrix[row][iter]);
		};
		for(int iter=size;iter>=col;--iter){
			matrix[row][iter]/=matrix[row][col];
		};
		for(int first=row+1;first<size;++first){
			if(fabs(matrix[first][col])>eps){
				for(int second=size;second>=col;--second){
					matrix[first][second]-=matrix[row][second]*matrix[first][col];
				};
			};
		};
		++row;
	};
	if(row<size){
		for(int iter=row;iter<size;++iter){
			if(fabs(matrix[iter][size])>eps){
				return -1;
			};
		};
		return 1;
	};
	for(int first=size-1;first>=0;--first){
		for(int second=first+1;second<size;++second){
			matrix[first][size]-=matrix[second][size]*matrix[first][second];
		};
	};
	return 0;
};
int main(int,char**){
	scanf("%d",&size);
	for(int first=0;first<size;++first){
		for(int second=0;second<=size;++second){
			scanf("%lf",&matrix[first][second]);
		};
	};
	int answer=gauss();
	if(answer!=0){
		printf("%d",answer);
	}else{
		for(int iter=0;iter<size;++iter){
			printf("x%d=%.2lf\n",iter+1,matrix[iter][size]);
		};
	};
	return 0;
};

在 infinity solution\text{infinity solution} 的部分输出了 unique solution\text{unique solution},8080 分求条!

2024/4/16 19:25
加载中...