/* 先输入未知数个数。 然后输入n*(n+1)的行列式。 */ #include <stdio.h> #include <stdlib.h> int hanglieshi(int a[],int n) { int j,s; if(n==1) s=a[0]; else { for(s=0,j=0; j<n; j++) { int yuzishi(int x,int b[],int y); if((j%2)==0) { s=s+a[j]*yuzishi(j,a,n); } else { s=s-a[j]*yuzishi(j,a,n); } } } return s; } int yuzishi(int x,int b[],int y) { int m,l,k=(y-1)*(y-1),q,c[k]; for(m=y,l=0; m<y*y; m++,l++) { if(m%y==x) m++; c[l]=b[m]; } q=hanglieshi(c,y-1); return q; } int main() { int n,h; while(~scanf("%d",&n)) { int x[n*n+n]; for(h=0; h<n*n+n; h++) { scanf("%d",&x[h]); } int tmp[n*n],cur=0; do { for(int i=0;i<n;i++) for(int j=0;j<n;j++) if(cur!=j)tmp[i*n+j]=x[i*(n+1)+j]; else tmp[i*n+j]=x[i*(n+1)+n]; puts(""); for(int i=0;i<n;i++) for(int j=0;j<n;j++) printf("%d%c",tmp[i*n+j],j==n-1&&i!=n-1?'\n':' '); if(cur==n)printf(" ------D=%d\n",hanglieshi(tmp,n)); else printf(" ------D%d=%d\n",cur+1,hanglieshi(tmp,n)); }while(++cur<=n); printf("------over-------"); } return 0; } /* 4 1 1 1 1 5 1 2 -1 4 -2 2 -3 -1 -5 -2 3 1 2 11 0 */
时间: 2024-11-14 15:27:41