装饰公司招聘,怎么关键词优化网站,黑龙江跃众品牌策划公司,wordpress生成pdf题目
输入一个包含n个方程n个未知数的线性方程组。 方程组中的系数为实数。 求解这个方程组。 下图为一个包含m个方程n个未知数的线性方程组示例: 输入格式
第一行包含整数n。 接下来n行#xff0c;每行包含n1个实数#xff0c;表示一个方程的n个系数以及等号右侧的常数。 …题目
输入一个包含n个方程n个未知数的线性方程组。 方程组中的系数为实数。 求解这个方程组。 下图为一个包含m个方程n个未知数的线性方程组示例: 输入格式
第一行包含整数n。 接下来n行每行包含n1个实数表示一个方程的n个系数以及等号右侧的常数。
输出格式
如果给定线性方程组存在唯一解则输出共n行其中第i行输出第i个未知数的解结果保留两位小数。如果给定线性方程组存在无数解则输出Infinite group solutions。 如果给定线性方程组无解则输出No solution。
数据范围
1n ≤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题解
#include iostream
#include algorithm
#include cmathusing namespace std;const int N 110;
/* C浮点数存在误差不能直接判断0要判断是否小于一个很小的数如果小于这个很小的数就认为是0如小于1e-6*/
const double eps 1e-6;int n;
double a[N][N];int gauss()
{int c, r;// c列r行for (c 0, r 0; c n; c ){int t r;for (int i r; i n; i )if (fabs(a[i][c]) fabs(a[t][c]))t i;if (fabs(a[t][c]) eps) continue;for (int i c; i n 1; i ) swap(a[t][i], a[r][i]);for (int i n; i c; i -- ) a[r][i] / a[r][c];for (int i r 1; i n; i )if (fabs(a[i][c]) eps)for (int j n; j c; j -- )a[i][j] - a[r][j] * a[i][c];r ; }// 无解和无穷多解的判断if (r n){// 如果出现了等号左右一个为0一个非0则说明无解for (int i r; i n; i )if (fabs(a[i][n]) eps)return 2;// 否则说明有无穷多解return 1;}for (int i n - 1; i 0; i -- )for (int j i 1; j n; j )a[i][n] - a[j][n] * a[i][j];return 0;
}int main()
{cin n;for (int i 0; i n; i )for (int j 0; j n 1; j )cin a[i][j];int t gauss();if (t 0){ for (int i 0; i n; i ) printf(%.2lf\n, a[i][n]);}else puts(No solution);return 0;
}
思路
这道题是运用了线性代数中求解矩阵的方法 高斯消元法并且用代码实现。具体思路如下图