标签:
坑爹的校园网锐捷,连了一上午都没连上。。。
默默地写了一个行列式计算器,其实就是用高斯消元随表搞搞,估计会有bug
如此低劣的东西,直接上源码得了。
1 #include<cstdio> 2 #include<cstdlib> 3 #include<cmath> 4 5 #define zero 1e-8 6 7 double a[101][101]; 8 9 int main(void) 10 { 11 int x; 12 scanf("%d", &x); 13 for(int i = 1; i <= x; ++i) 14 for(int j = 1; j <= x; ++j) 15 scanf("%lf", &a[i][j]); 16 int flag = 0; 17 for(int i = 1; i < x; ++i){ 18 if(fabs(a[i][i]) <= zero) 19 for(int j = i+1; j <= x; ++j) 20 if(fabs(a[j][i]) > zero){ 21 flag++; 22 for(int k = 2, l; k <= x; ++k){ 23 l = a[i][k]; 24 a[i][k] = a[j][k]; 25 a[j][k] = l; 26 } 27 break; 28 } 29 if(fabs(a[i][i]) > zero) 30 for(int j = i+1; j <= x; ++j) 31 if(fabs(a[j][i]) > zero){ 32 double l = a[j][i] / a[i][i]; 33 for(int k = i; k <= x; ++k) a[j][k] -= a[i][k] * l; 34 } 35 } 36 /* 37 for(int i = 1; i <= x; ++i){ 38 for(int j = 1; j <= x; ++j) 39 printf("%lf ", a[i][j]); 40 printf("\n"); 41 } 42 */ 43 double ans = a[1][1] * (1 - 2*(1 && flag)); 44 for(int i = 2; i <= x; ++i) ans *= a[i][i]; 45 printf("%d", (int)round(ans)); 46 return 0; 47 }
标签:
原文地址:http://www.cnblogs.com/xuezhonghao/p/4850863.html