Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- double det ( int n, int w, int * WK, double ** A )
- {
- int i, j, k, m, * KK;
- double s;
- if( n == 1 ) // sprawdzamy warunek zakończenia rekurencji
- return A [ w ][ WK [ 0 ] ]; // macierz 1 x 1, wyznacznik równy elementowi
- else
- {
- KK = new int [ n - 1 ]; // tworzymy dynamiczny wektor kolumn
- s = 0; // zerujemy wartość rozwinięcia
- m = 1; // początkowy mnożnik
- for( i = 0; i < n; i++ ) // pętla obliczająca rozwinięcie
- {
- k = 0; // tworzymy wektor kolumn dla rekurencji
- for( j = 0; j < n - 1; j++ ) // ma on o 1 kolumnę mniej niż WK
- {
- if( k == i ) k++; // pomijamy bieżącą kolumnę
- KK [ j ] = WK [ k++ ]; // pozostałe kolumny przenosimy do KK
- }
- s += m * A [ w ][ WK [ i ] ] * det ( n - 1, w + 1, KK, A );
- m = -m; // kolejny mnożnik
- }
- free(KK); // usuwamy zbędną już tablicę dynamiczną
- return s; // ustalamy wartość funkcji
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment