• 算法复习——高斯消元(ssoi)


    题目:

    题目描述

    Tom 是个品学兼优的好学生,但由于智商问题,算术学得不是很好,尤其是在解方程这个方面。虽然他解决 2x=2 这样的方程游刃有余,但是对于下面这样的方程组就束手无策了。
    x+y=3
    x-y=1
    于是他要你来帮忙。给定一个线性多元一次方程组,请你求出所有未知数的解。
    保证在 int 范围内可以处理所有问题。

    输入格式

    输入文件的第一行一个数字 N(1≤N≤100),表示给定的方程组中的未知数的个数,同时也是这个方程组含有的方程个数。
    第 2 到 N+1 行,每行 N+1 个数。每行的前 N 个数表示第 1 到 N 个未知数的系数。第 N+1 个数表示 N 个未知数乘以各自系数后再相加的和。

    输出格式

    输出一行,有 N 个整数,表示第 1 到 N 个未知数的值(整数解),而且数据保证有整数解。

    样例数据 1

    输入  [复制]


    1 1 3 
    1 -1 1

    输出

          2 1

    题解:

    高斯消元模板题,具体过程见:http://jingyan.baidu.com/album/39810a23e40c80b636fda63a.html?picindex=1

    代码:

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
    #include<ctime>
    #include<cctype>
    #include<cstring>
    #include<string>
    #include<algorithm>
    using namespace std;
    double map[105][105],ans[105];
    int n;
    int main()
    {
      //freopen("a.in","r",stdin);
      scanf("%d",&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++)
      {
        bool flag=false;
        if(!map[i][i])
        {
          for(int j=i+1;j<=n;j++)
            if(map[j][i])
            {
              flag=true;
              for(int k=i;k<=n+1;k++)
                swap(map[j][k],map[i][k]);
            } 
          if(flag==false)  continue;
        }
        for(int j=i+1;j<=n;j++)
        {  
          double temp=map[j][i]/map[i][i];
          for(int k=i;k<=n+1;k++)
            map[j][k]-=temp*map[i][k];
        }
      }
      for(int i=n;i>=1;i--)
      {
        ans[i]=map[i][n+1]/map[i][i];
        for(int j=i-1;j>=1;j--)
          map[j][n+1]-=map[j][i]*ans[i];
      }
      for(int i=1;i<=n;i++)
        cout<<(int)(ans[i]+0.5)<<' ';
      return 0;
    }
  • 相关阅读:
    css3
    js的去重
    mongodb的db.collection is not function
    mongoose的关联查询 :populate
    html/css杂题
    经典的Foo和getName
    AngularJS控制器
    AJAX请求小项目
    AngularJS 依赖注入
    Canvas画布实现自定义时钟效果
  • 原文地址:https://www.cnblogs.com/AseanA/p/7245937.html
Copyright © 2020-2023  润新知