此处不在赘述行列式的数学求法。各位好友不会的还请自行补习。
知识点行列式的降阶计算 。
#include#include using namespace std; #define N 100 int D[N][N]; //用于储存行列式 int Deter(int a[][N], int u, int k) { if(u == 1) return a[0][0]; //如果为一阶行列式直接输出结果 if(u == 2) return a[0][0] * a[1][1] - a[0][1] * a[1][0];//二阶行列式直接输出结果 int ans = 0; for(int i = 1; i < u; ++i)//i代表循环的次数 { int line = 0, row = 0; int D_new[N][N]; //用于存放新的降阶后的矩阵 for(int m = 1; m < u; ++m){ for(int j = 0; j < u; ++j)//j代表列数 { if(j == k) continue; //此处的含义是删除含有k的这一列,与下面的k++相呼应 D_new[line][++row] = a[i][j]; } line++; row = 0; } if(i % 2 == 0) ans -= a[0][i] * Deter(D_new, u - 1, 0), k++;//k的意思是删除这一列的数 else ans += a[0][i] * Deter(D_new, u - 1, 0), k++; } } int main() { int n; cout << "输入行列式的阶数:"; cin >> n; for(int i = 0; i < n; ++i) for(int j = 0; j < n; ++j){ cin >> D[i][j]; } int ans = 0; ans = Deter(D, n, 0); cout << ans; system("pause"); return 0; }



