您的位置:首页 > Web前端 > JavaScript

【BZOJ 1013】 [JSOI2008]球形空间产生器sphere 高斯消元

2016-12-19 11:53 459 查看
列方程后高斯消元即可

#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#define eps 1e-6
using namespace std;
int n;
double a[15][15],b[15][15];

void solve(){
for(int k,i=1;i<=n;i++){
for(k=i;k<=n;k++)if(fabs(a[k][i])>eps)break;
if(k>n)continue;
if(k^i)for(int j=1;j<=n+1;j++)swap(a[i][j],a[k][j]);
double z=a[i][i];
for(int j=1;j<=n+1;j++)a[i][j]/=z;
for(int j=1;j<=n;j++){
if(j==i)continue;
z=a[j][i];
for(int t=1;t<=n+1;t++){
a[j][t]-=z*a[i][t];
}
}
}
for(int i=1;i<=n;i++)
printf("%.3lf%c",a[i][n+1],i==n?'\n':' ');
}

int main(){
scanf("%d",&n);
for(int i=1;i<=n+1;i++){
for(int j=1;j<=n;j++)
scanf("%lf",&b[i][j]);
if(i>1){
for(int j=1;j<=n;j++){
a[i-1][j]=2*b[i][j]-2*b[i-1][j];
a[i-1][n+1]+=b[i][j]*b[i][j]-b[i-1][j]*b[i-1][j];
}
}
}
solve();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: