WA #12 #13 求调
查看原帖
WA #12 #13 求调
1398636
yezhengjie0000001楼主2025/7/25 18:08
#include<bits/stdc++.h>
using namespace std;
int n;
double a[55][55];
double eq=1e-7;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){//a[i][n+1]表示b[i] 
		for(int j=1;j<=n+1;j++){
			cin>>a[i][j];
		}
	}
	for(int j=1;j<=n;j++){
		double mx=0;
		int ii;
		for(int i=j;i<=n;i++){
			if(fabs(a[i][j])>mx){
				mx=fabs(a[i][j]);					
				ii=i; 
			}
		}
		//找到最大绝对值系数提到第j行 
		for(int jj=1;jj<=n+1;jj++){
			swap(a[j][jj],a[ii][jj]);
		} //交换 
		double k=a[j][j];
		//cout<<k<<' '<<mx<<' '<<'\n';
		if(fabs(mx)<=eq){
			continue;
		}
		for(int jj=1;jj<=n+1;jj++){
			a[j][jj]/=k;
		} 
		for(int i=1;i<=n;i++){
			if(i==j){
				continue;
			}
			double t=a[i][j];
			for(int jj=n+1;jj>=1;jj--){
				a[i][jj]-=a[j][jj]*t;
			}
		}
	}
	bool flag=0,g=0;
	for(int i=1;i<=n;i++){
		g=0;
		for(int k=1;k<=n;k++){
			if(fabs(a[i][k])>=eq){
				g=1;
				break;
			}
		}
		if(g==0){
			if(fabs(a[i][n+1])>=eq){
				cout<<-1<<'\n';
				return 0;
			}else{
				flag=1;
			}
		}
	}
	if(flag){
		cout<<0<<'\n';
		return 0;
	}
	for(int i=1;i<=n;i++){
		printf("x%d=%.2lf\n",i,a[i][n+1]);
	}
	return 0;
}
2025/7/25 18:08
加载中...