标签:href max math cin using info 模拟 scanf tps

注意点:
#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
const double eps=1e-7;
const int MAXN=2e2;
double map[MAXN][MAXN];
double ans[MAXN];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n+1;j++)
scanf("%lf",&map[i][j]);//读入方程组
for(int i=1;i<=n;i++){//枚举每一个元
int r=i;//选择哪一个方程
for(int j=i+1;j<=n;j++)//i之前的都已经排好了
if(fabs(map[r][i])<fabs(map[j][i]))
r=j; //找系数绝对值最大的方程
if(fabs(map[r][i])<eps){//存在自由元
printf("No Solution");//无解
return 0;
}
if(i!=r)swap(map[i],map[r]);//优先利用系数绝对值更大的方程
double div=map[i][i];//系数除数
for(int j=i;j<=n+1;j++)//枚举下面的每个方程
map[i][j]/=div;
for(int j=i+1;j<=n;j++){
div=map[j][i];
for(int k=i;k<=n+1;k++)
map[j][k]-=map[i][k]*div;
}
}
ans[n]=map[n][n+1];
for(int i=n-1;i>=1;i--){//带回到原方程组
ans[i]=map[i][n+1];//x_i的具体值
for(int j=i+1;j<=n;j++)
ans[i]-=(map[i][j]*ans[j]);
}
for(int i=1;i<=n;i++)
printf("%.2lf\n",ans[i]);
return 0;
}
标签:href max math cin using info 模拟 scanf tps
原文地址:https://www.cnblogs.com/zbsy-wwx/p/11734764.html