评测姬全输出No Solution 求助(玄关
查看原帖
评测姬全输出No Solution 求助(玄关
732565
hcnx楼主2024/9/15 09:46
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=110;
const double eps=1e-6;
int n;
double A[N][N];
int gauss(){
	int c,r;
	for(int c=1,r=1;c<=n;++c){
		int t=r;
		for(int i=r;i<=n;++i){
			if(fabs(A[i][c]>fabs(A[t][c]))) t=i;
		}
		if(fabs(A[t][c])<eps) continue;
		for(int i=c;i<=n+1;++i) swap(A[t][i],A[r][i]);
		for(int i=n+1;i>=c;--i) A[r][i]/=A[r][c];
		for(int i=r+1;i<=n;++i){
			if(fabs(A[i][c])>eps){
				for(int j=n+1;j>=c;--j){
					A[i][j]-=A[r][j]*A[i][c];
				}
			}
		}
		++r;
	}
	if(r<=n)return 0;
	for(int i=n;i>1;--i){
		for(int j=1;j<i;++j){
			A[j][n+1]-=A[j][i]*A[i][n+1];
		}
	}
	return 1;
}
int main(){
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;++i){
		for(int j=1;j<=n+1;++j){
			cin>>A[i][j];
		}
	}
	int t=gauss();
	if(t==0)cout<<"No Solution"<<endl;
	else for(int i=1;i<=n;++i) printf("%.2lf\n",A[i][n+1]);
	cout<<endl;
	return 0;
}
2024/9/15 09:46
加载中...