90分求调(玄关)
查看原帖
90分求调(玄关)
1066484
XuZile楼主2025/7/25 13:04

代码:

#include<bits/stdc++.h>
using namespace std;
int n;
double mp[105][105];
const double kkk=1e-6;
int main(){
    cin >> n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n+1;j++){
			cin >> mp[i][j];
		}
	}
	int key=1;
    for(int i=1;i<=n;i++){
        int r=i;
        for(int j=i+1;j<=n;j++){
        	if(fabs(mp[r][i])<fabs(mp[j][i])) r=j;
		}
		if(i!=r) swap(mp[r],mp[i]);
        if(fabs(mp[i][i])<=kkk) continue;
        for(int j=1;j<=n;j++){
        	if(i==j) continue;
            double div=mp[j][i]/mp[i][i];
            for(int k=i;k<=n+1;k++){
            	mp[j][k]-=mp[i][k]*div;
			}
        }
    }
    for(int i=1;i<=n;i++){
    	if(fabs(mp[i][i])<=kkk){
			if(fabs(mp[i][n+1])>kkk) key=-1;
			else if(key!=-1) key=0;
		}
	}
	if(key!=1){
		printf("%d\n",key);
		return 0;
	}
    for(int i=1;i<=n;i++) printf("x%d=%.2lf\n",i,mp[i][n+1]/mp[i][i]);
}
2025/7/25 13:04
加载中...