Chương trình mình mình viết đang dở dang như thế này. Tại không biết lúc nào thì s+=k, lúc nào thì s-=k
#include<stdio.h>#include<conio.h>int a[101][101],x[101],n;void input(){ FILE *fp=fopen("data.txt","r"); fscanf(fp,"%d",&n); for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ fscanf(fp,"%d",&a[i][j]); printf("%d ",a[i][j]); } printf("\n"); } fclose(fp);}void swap(int *x,int *y){ int k=*x; *x=*y; *y=k;}int process(){ int i,j,k,p; for(i=n-1;i>=1;i--)if(x[i+1]>x[i])break; if(i==0)return 0; for(j=n;j>i;j--)if(x[j]>x[i])break; swap(&x[i],&x[j]);i++; for(j=i;j-i<n-j;j++)swap(&x[j],&x[n-j+i]); return 1;}int calDet(){ int i,j,k=0,s=0; printf("\n\n"); for(i=1;i<=n;i++)x[i]=i; do{ for(i=1,k=1;i<=n;i++){ if((x[i]+i)&1)k*=-a[x[i]][i]; else k*=a[x[i]][i]; printf("%d",a[x[i]][i]); if(i<n)printf("*"); } s+=k; printf("-->%d\n",k); }while(process()); return s;}void main(){ clrscr(); input(); printf("\n%d",calDet()); getch();}
Bài viết đã được chỉnh sửa nội dung bởi quanghoa: 26-11-2009 - 21:42