#include
#include
#include
int main()
{
int det(int p,int n);
int *w_o(int *q,int n,int a,int b);
int n,i,j,q;
scanf("%d",&n);
int a[n][n];
for(i=0; i for(j=0; j scanf("%d",&a[i][j]);
int *m=&a[0][0];
q=det(m,n);
printf("%d",q);
return 0;
}
int det(int *p,int n)
{
int *w_o(int *q,int n,int a,int b);
int k,s=0;
int *b=NULL;
int m=n;
if(n>2)
{
for(k=0; k<n; k++)
{
b=w_o(p,--m,k,0);
s=s+(int)pow(-1,k+0)*det(b,n);
}
return(s);
}
else
{
return((*b)(*(b+3))-(*(b+1))*(*(b+2)));
}
}
int w_o(int *q,int n,int a,int b)
{
int *pt;
int v[n][n];
int row=0,col=0,i,j;
for(i=0; i<n+1; i++)
{
for(j=0; j<n+1; j++)
{
if(i!=a&&j!=b)
{
if(row<n)
{
if(col<n)
{
v[row][col]=(q+i*(n+1)+j);
col++;
}
else
{
col=0;
row++;
v[row][col]=*(q+i*(n+1)+j);
col++;
}
}
}
}
}
pt=&v[0][0];
return(pt);
}