64,654
社区成员
发帖
与我相关
我的任务
分享
//按第一行展开计算|A|
//matrix为所求矩阵,n阶
double getA(double **matrix,int n)
{
if(n==1)
{
return matrix[0][0];
}
int i,j,k;
double ans = 0;
double **temp;//余子式
temp = new double*[n]
for(i=0;i<n;i++)
temp[i] = new double[n];
for(i=0;i<n;i++)
{
for(j=0;j<n-1;j++)
{
for(k=0;k<n-1;k++)
{
temp[j][k] = matrix[j+1][(k>=i)?k+1:k];
}
}
double t = getA(temp,n-1);
if(i%2==0)
{
ans += matrix[0][i]*t;
}
else
{
ans -= matrix[0][i]*t;
}
}
return ans;
}