aboutsummaryrefslogtreecommitdiff
path: root/Random/det.c
diff options
context:
space:
mode:
Diffstat (limited to 'Random/det.c')
-rw-r--r--Random/det.c50
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));
+}