n阶行列式求法
#include<stdio.h>
#include<conio.h>
int main()
{
char l;
int a[100][100],z;
int i,j,t,n,m1,m2,g,k,c,e;
int b[150];
loop:
printf("Input n :");
scanf("%d",&n);
clrscr();
if(n>100)
{
printf("It's too big \n");
goto loop;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
gotoxy(1+j*4,1+i*2);
scanf("%d",&a[i][j]);
}
}
b[1]=1,i=1;
z=0;
while(1)
{
g=1;
for(k=i-1;k>=1;k--)
if(b[k]==b[i])
g=0;
if(i==n&&g!=0)
{
t=1;
for(j=1;j<=n;j++)
{
c=b[j]-1;
t*=a[j-1][c];
}
e=0;
for(m1=1;m1<=n;m1++)
for(m2=m1+1;m2<=n;m2++)
if(b[m1]>b[m2])
e++;
if(e%2)
t=-t;
z+=t;
}
if(i<n&&g==1)
{
i++;
b[i]=1;
continue;
}
while(b[i]==n&&i>1) i--;
if(b[i]==n&&i==1) break;
else b[i]++;
}
printf("\n\tdet(i,j) = %d\n\t\t\t\t\t",z);
l=getch();
if(l=='y'||l=='Y')
{
clrscr();
goto loop;
}
return 0;
}