求矩阵行列式的值,请教各位大大们
用向量求,不知道哪里出了问题,用递归做的
int getnumber(int n,vector<vector<int> >a)
{int sum=0;
if(n==1)
{sum=a[0][0];
}
else
{vector<vector<int> >e(a[0].size(),vector<int>(a.size()));
vector<int> f=e[0];
e.erase(e.begin());
for(int j=0;j<e[0].size();+j)
{vector<vector<int> >g=e;
for(int i=0;i<e.size();++i)
{ g[i].erase(g[i].begin()+j);}
if(j%2==0)
{sum+=f[j]*getnumber(n-1,g);
}
else
{sum+=(-1)*f[j]*getnumber(n-1,g);
}
}
}
return sum;
}
运行不出结果,请教是哪里出问题了呢
[解决办法]
for(int j=0;j<e[0].size();++j)//++j
[解决办法]
[解决办法]
[解决办法]
- C/C++ code
#define zero 0.0000000001 double square(double n[][], long s) { for (long i = 0; i < s; i++) { 当前0则交换为非0行 if (abs(n[i][i]) < zero) { if (i < s - 1) { for (long j = i + 1; j < s; j ++) if (abs(n[j][j]) > zero) SWAP(i行, j行);跳出倒1 return 0.0; } return 0.0; } 1:首先消行 for (int j=i +1; j <s;j++) for (int k= i; k< s; k++) n[j][k] = n[j][k] * n[i][i]/n[j][i] - n[j][k]; 消列 } 对角相乘 double r = 1.0; for (int i = 0; i < s; i ++) r *= n[i][i]; return r; }