我写的AC代码:
#include<bits/stdc++.h>
using namespace std;
int n;
double a[105][105];
const double eps = 1e-6;
int main () {
scanf("%d", &n);
for(int i = 1;i <= n;++i)
for(int j = 1;j <= n+1;++j)
scanf("%lf", &a[i][j]);
for(int i = 1;i <= n;++i) {
int mx = i;
for(int j = i+1;j <= n;++j)
if(fabs(a[j][i]) > fabs(a[mx][i])) mx = j;
for(int j = 1;j <= n+1;++j) swap(a[i][j], a[mx][j]);
if(fabs(a[i][i]) < eps) {
puts("No Solution");
exit(0);
}
for(int j = n+1; j >= 1; --j) a[i][j] /= a[i][i];
for(int j = 1;j <= n;++j)
if(j != i) {
double temp = a[j][i]/a[i][i];
for(int k = 1;k <= n+1;++k) a[j][k] -= a[i][k]*temp;
}
}
for(int i = 1;i <= n;++i) printf("%.2f\n", a[i][n+1]);
return 0;
}
将选定方程的主元系数变为1这一步 for (int j = n+1; j >= 1;--j),为什么j正序枚举和倒序枚举的结果不同?求大佬解释