洛谷 P3389 高斯消元模板题

来源:互联网 发布:画婚车路线图的软件 编辑:程序博客网 时间:2024/05/21 15:27
高斯消元模板(求多元一次线性方程的解)
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#define N 105using namespace std;int n;double date[N][N],ans[N];int main(){scanf("%d",&n);for(int i=1;i<=n;i++){    for(int j=1;j<=n+1;j++)    {    scanf("%lf",&date[i][j]);    date[i][j]*=1.00;//转化为浮点数 }double tmp=date[i][1];for(int j=1;j<=n+1;j++)    date[i][j]=date[i][j]*1.0/tmp;//将第一项化为1 }for(int i=1;i<=n;i++){if(date[i][i]==0){printf("No Solution\n");return 0;}for(int j=i+1;j<=n+1;j++) date[i][j]/=date[i][i];//将对角线化为1 date[i][i]=1.0;for(int j=i+1;j<=n;j++)//将下三角化为0 {for(int k=i+1;k<=n+1;k++)     date[j][k]-=date[i][k]*date[j][i];date[j][i]=0;}  }for(int i=n;i;i--)//求ans; {double opt=date[i][n+1];for(int j=i+1;j<=n;j++)     opt-=ans[j]*date[i][j];ans[i]=opt;}for(int i=1;i<=n;i++) printf("%.2lf\n",ans[i]);return 0; } 

原创粉丝点击