不懂就问,我记着如果把行列式某一行全乘上 k,行列式的值也乘上 k,而例如这题我写的下面这段代码:
double gauss(int n){
double d=1.0;
for(int k=1;k<n;++k){
int t;
for(t=k;t<n;++t)
if(a[t][k])
break;
if(t==n)return 0;
if(t!=k)swap(a[k],a[t]),d*=-1.0;
d*=a[k][k];
for(int i=n-1;i>=k;--i)a[k][i]/=a[k][k];
for(int i=k+1;i<n;++i)
for(int j=n-1;j>=k;--j)
a[i][j]-=a[k][j]*a[i][k];
}
for(int i=1;i<n;++i)d*=a[i][i];
return d;
}
中为什么是 d*=a[k][k] 而不是 d/=a[k][k],这是整行乘上了个 a[k][k]1 吧,但是经过测试,写成 d/=a[k][k] 就挂了