• 【模板】高斯消元法


    洛谷1583

     1 #include<cstdio>
     2 #include<algorithm>
     3 using namespace std;
     4 const int maxn=1000;
     5 int n,x;
     6 double a[maxn][maxn];
     7 inline void read(int &k){
     8     k=0; int f=1; char c=getchar();
     9     while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar();
    10     while('0'<=c&&c<='9')k=k*10+c-'0',c=getchar();
    11     k*=f;
    12 }
    13 void swap_a(int x,int y){for (int i=1;i<=n+1;i++) swap(a[x][i],a[y][i]);}
    14 bool Gauss(){
    15     int now=1;
    16     while(now<=n){
    17         if (a[now][now]==0){
    18             for (int i=now+1;i<=n;i++) if(a[i][now]!=0) {swap_a(i,now); break;}
    19             if (a[now][now]==0) return puts("No Solution"),0;
    20         } 
    21         double tmp=a[now][now];
    22         for (int i=1;i<=n+1;i++) a[now][i]=a[now][i]/tmp;  
    23         for (int i=1;i<=n;i++){                        
    24             if (i==now) continue; double tmp=a[i][now];
    25             for (int j=1;j<=n+1;j++) a[i][j]-=a[now][j]*tmp;
    26         }
    27         now++;
    28     }
    29     return 1;
    30 }
    31 int main(){
    32     read(n);
    33     for (int i=1;i<=n;i++)
    34         for (int j=1;j<=n+1;j++) read(x),a[i][j]=x;
    35     if (Gauss()) for (int i=1;i<=n;i++) printf("%.2f
    ",a[i][n+1]); printf("
    ");
    36     return 0;
    37 } 
    View Code
  • 相关阅读:
    解决依赖的moduleBuildConfig.DEBUG总是未false的问题
    android异步处理机制
    Android 5.0 行为变更
    Android 6.0 变更
    Android 7.0 行为变更
    android 8.0变更
    Android 4.4 API
    Android常见问题集锦
    Android笔记汇总目录
    Delphi中Indy 10的安装和老版本的卸载
  • 原文地址:https://www.cnblogs.com/DriverLao/p/7978949.html
Copyright © 2020-2023  润新知