小工具知识网

当前位置: 首页 > 行业知识 > Acwing---883. 高斯消元解线性方程组

行业知识

Acwing---883. 高斯消元解线性方程组

2026-10-29 10:42:34 来源:互联网转载

高斯消元解线性方程组

  • 1.题目
  • 2.基本思想
  • 3.代���实现

    1.题目

    输入一个包含 n 个方程 n 个未知数的线性方程组。

    方程组中的系数为实数。

    求解这个方程组。

    下图为一个包含 m 个方程 n 个未知数的线性方程组示例:

    输入格式

    第一行包含整数 n。

    接下来 n n n 行,每行包含 n + 1 n+1 n+1个实数,表示一个方程的 n n n 个系数以及等号右侧的常数。

    输出格式

    如果给定线性方程组存在唯一解,则输出共 n n n 行,其中第 i i i 行输出第 i i i 个未知数的解,结果保留两位小数。

    注意:本题有 SPJ,当输出结果为 0.00 时,输出 -0.00 也会判对。在数学中,一般没有正零或负零的概念,所以严格来说应当输出 0.00,但是考虑到本题作为一道模板题,考察点并不在于此,在此处卡住大多同学的代码没有太大意义,故增加 SPJ,对输出 -0.00 的代码也予以判对。

    如果给定线性方程组存在无数解,则输出 Infinite group solutions。

    如果给定线性方程组无解,则输出 No solution。

    数据范围

    1≤n≤100

    ,

    所有输入系数以及常数均保留两位小数,绝对值均不超过 100

    。

    输入样例:

    3

    1.00 2.00 -1.00 -6.00

    2.00 1.00 -3.00 -9.00

    -1.00 -1.00 2.00 7.00

    输出样例:

    1.00

    -2.00

    3.00

    2.基本思想

    3.代码实现

    import java.util.Scanner;//java中的Math.abs()可以用于浮点数取绝对值//String.format("%.2f",x)  %.2f"为保留两位小数,x为要输出的数字public class Main {    static int N = 110;    static double a[][] = new double[N][N];    static int n;    static double eps = 1e-6;    private static int gauss() {//高斯消元 存在答案时:a[i][n]   0//从列开始枚举            int t = r;            for (int i = r; i = c; j--)                        a[i][j] -= a[r][j] * a[i][c];            r++;        }        if (r  eps) return 2;// 无解            return 1;// 有无穷多组解        }        for (int i = n - 1; i >= 0; i--)            for (int j = i + 1; j                                                 

上一篇:服务器日志怎么调整时间?

下一篇:光遇有几个服务器怎么下载?