n階行列式計算 c語言實現(完結)

2021-06-27 18:01:57 字數 1129 閱讀 4032

花了半天時間,寫了這個n階行列式計算的程式,應該算是比較優美吧,有很多地方多次做了優化,程式占用記憶體不是很大,要是說小吧,也不合適,因為裡邊有乙個遞迴,而且遞迴的深度還比較深。時間複雜度具體沒有細看,應該不會太大。

ok,先看程式。

#include #include #include //包含的標頭檔案不解釋

typedef bool int //因為標準c裡邊沒有bool型別才這麼做

#define false 0

#define true 1

//定義幾個全域性變數,無奈之舉

int *c, //將整個行列式的值存到c指向的空間裡

n = 0,//記錄當前的行列式計算進行了多少步

a, //方便傳遞行列式的階數

sum = 0; //記錄每一步行列式計算所累加的結果

int aq(int a) //計算階乘的函式,就不多解釋了

void swap(int *a, int *b) //利用位址傳遞,交換兩個數的值

bool sa(int *l) //計算在行列式計算過程中每一項前邊的符號是正還是負

void perm(int *l, int k, int m) //整個程式裡邊的核心函式,找出在不同行不同列的所有組合

}}void main()//主函式

printf("\n\n");

perm( b, 0, a - 1 );//計算行列式的值

printf("\n行列式展開式共有%d項\n", aq( a ) );//列印出來行列式的各種資訊

if ( a % 2 != 0 ) f = a + 1;//判斷當前的行列式是偶數行還是奇數行

else f = a;

for ( i = 0; i < a * a; i ++ )

printf("\n\n");

printf("是否繼續?( 1 / 0 )\n");//提示是否退出

scanf("%d", &e);

n = 0;//每次都將都將上一次的執行記錄消除

if ( e == 1 ) goto u; //判斷是否推出

else if ( e == 0 ) exit( 0 );

}

c 實現n階行列式計算

思路簡述 將n階行列式化為上三角行列式,對角元乘積之和即為行列式的值。include iostream using namespace std void main result 1 10階以上行列式要對a陣列修改大小 int i,j,k,t int size cout 請輸入行列式的階數 size ...

n階行列式計算Python和C語言實現

這裡使用對角線法和遞迴降價代數余子式求和的方法。python遞迴求行列式 def det m if len m 0 return none elif len m 1 return m 0 0 else s 0 for i in range len m n row a for a in range l...

遞迴法實現n階行列式求值 c語言實現

遞迴實現n階行列式計算,難點在於二維陣列的動態申請 include include intmain for i 0 i num i 輸入行列式 printf the result is 0f n f num,array 呼叫函式求解 printf 請輸入階數 n return0 doublef in...