花了半天時間,寫了這個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...