高斯消元裸题 记录模板 BZOJ 1013

来源:互联网 发布:手机练钢琴软件 编辑:程序博客网 时间:2024/06/05 03:15

两遍过

第一遍是PE了 最后一个数不能输出空格 气死啦

                                                        By——WXH

//我的变量是需要就加一个 所以就有很多定义 惨啊

#include<bits/stdc++.h>using namespace std;int n;double st[20];double s,tmp;double gs[20][20];double ans[20];void gauss(){for(int i=1;i<n;i++){double t=gs[i][i];for(int j=i;j<=n+1;j++)gs[i][j]/=t;for(int j=i+1;j<=n;j++){double tt=-gs[j][i];for(int k=i;k<=n+1;k++){gs[j][k]+=tt*gs[i][k];}}}for(int i=n;i;i--){double t=gs[i][n+1];for(int j=n;j>i;j--){t-=gs[i][j]*ans[j];}ans[i]=t/gs[i][i];}}int main(){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%lf",&st[i]);s+=st[i]*st[i];}for(int i=1;i<=n;i++){double sum=0;for(int j=1;j<=n;j++){scanf("%lf",&tmp);sum+=tmp*tmp;gs[i][j]=2*(tmp-st[j]);}gs[i][n+1]=sum-s;}gauss();for(int i=1;i<n;i++){printf("%.3lf ",ans[i]);}printf("%.3lf",ans[n]);return 0;}


0 0