首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-02-14 
求矩阵行列式的值,请教各位大大们用向量求,不知道哪里出了问题,用递归做的int getnumber(int n,vectorvec

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

热点排行