行列式求值的算法
梦里伊人
posted @ 2007年8月04日 06:29
in c语言笔记
, 1703 阅读
-
#include<stdio.h>
-
#include<malloc.h>
-
-
float A(float **a,int m)
-
{
-
int i,j,c,k,l,t,u;
-
float **b,g,h,f;
-
u=m-1;
-
b=malloc(u*sizeof(float *));
-
for(i=0;i<u;i++)
-
b[i]=malloc(u*sizeof(float));
-
f=0;
-
t=-1;
-
for(c=0;c<m;c++)
-
{
-
g=a[0][c];
-
for(k=0,i=1;i<m,k<u;i++)
-
{
-
for(l=j=0;j<m,l<u;j++)
-
{
-
if(j==c)
-
continue;
-
b[k][l]=a[i][j];
-
l++;//注意:该语句在此处与在for语句中的差别,后者为什么不对。
-
}
-
k++;
-
}
-
t=t*(-1);
-
if(u==0)
-
h=1;
-
else
-
h=A(b,u);
-
f+=t*g*h;
-
}
-
return f;
-
}
-
-
int main(void)
-
{
-
int i,j,n;
-
float k;
-
float **a;
-
scanf("%d",&n);
-
a=malloc(n*sizeof(float *));
-
for(i=0;i<n;i++)
-
a[i]=malloc(n*sizeof(float));
-
for(i=0;i<n;i++)
-
{
-
for(j=0;j<n;j++)
-
{
-
scanf("%f",&a[i][j]);
-
}
-
}
-
k=A(a,n);
-
return 0;
-
}
-