行列式计算
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
int main()
{
int n=0;
int a[50]= {0};
int b[50][50]= {0};
int sum =0,x;
cout<< "\t\t\t\t\t行列式计算\n请输入阶数:";
cin >> n;
cout<<"请输入整个行列式\n";
for(int i=0; i< n; i++)
{
a[i] = i+1;
for(int j =0 ; j< n; j++)
cin >> b[i][j];
}
cout<<"counting...\n";
do
{
x=1;
for(int i=0 ; i< n; i++)
{
x*=b[i][a[i]-1];
}
int flog=0;
for(int i =0; i< n ; i++) //计算逆序数
{
for(int j =i ; j<n ; j++)
if(a[i]>a[j])
flog++;
}
if(flog&1) //奇数和1按位于等于1
{
sum-=x;
}
else
{
sum+=x;
}
}while(next_permutation(a,a+n));
printf("此行列式结果为:%d\n",sum);
return 0;
}
版权声明:本文为chinashenkai原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。