diff options
author | leo <leo@azuminha.com> | 2023-03-06 01:32:31 -0300 |
---|---|---|
committer | leo <leo@azuminha.com> | 2023-03-06 01:32:31 -0300 |
commit | 033867165ee1398d5d94f265754534edc2a2a394 (patch) | |
tree | b44aae61efa7dca262655d593026635c8cd7c43e /Random/det.c | |
parent | acadd0b6cd11d384e66302a66df8d4edb6a0e862 (diff) |
Diffstat (limited to 'Random/det.c')
-rw-r--r-- | Random/det.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/Random/det.c b/Random/det.c new file mode 100644 index 0000000..8e3f524 --- /dev/null +++ b/Random/det.c @@ -0,0 +1,50 @@ +#include <stdio.h> +void printm(int MATRIZ[][100], int n){ + for(int i=0; i<n; ++i){ + for(int j=0; j<n; ++j){ + printf("%d ", MATRIZ[i][j]); + } + printf("\n"); + } +} + +void copy(int MATRIZ[][100], int COPY[][100], int n, int y, int x){ + int COPY_Y = 0, COPY_X = 0; + for(int i = 0; i < n; ++i){ + if(i != y){ + COPY_X = 0; + for(int j = 0; j < n; ++j){ + if(j != x){ + COPY[COPY_Y][COPY_X] = MATRIZ[i][j]; + COPY_X++; + } + } + COPY_Y++; + } + } +} + +int det(int MATRIZ[][100], int n){ + int d = 0; + if(n == 1) return MATRIZ[0][0]; + int COPY[100][100]; + int sinal = -1; + for(int i=0; i<n; ++i){ + sinal *= -1; + copy(MATRIZ, COPY, n, 0, i); +// printm(COPY, n-1); +// printf("\n"); + d += sinal * MATRIZ[0][i] * det(COPY, n-1); + } + return d; +} + +int main(){ + int n; + scanf("%d", &n); + int MATRIZ[100][100]; + for(int i=0; i<n; ++i) + for(int j=0; j<n; ++j) + scanf("%d", &MATRIZ[i][j]); + printf("%d\n", det(MATRIZ, n)); +} |