读书人

求矩阵行列式的值,大大们

发布时间: 2012-02-14 19:19:19 作者: rapoo

求矩阵行列式的值,请教各位大大们
用向量求,不知道哪里出了问题,用递归做的
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
[解决办法]

探讨
for(int j=0;j<e[0].size();++j)//++j

[解决办法]
探讨
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;       } 

读书人网 >C++

热点推荐