#include<stdio.h>
#include<string.h>
int result;
int* data;
int* used;
int* location;
void f(int hang,int lie,int** arr){
if(hang>lie){
int tempS=1;
for(int i=0;i<=lie;i++)
tempS*=data[i];
int reserveCount=0;
for(int j=0;j<=lie;j++)
for(int k=j+1;k<=lie;k++)
if(location[j]>location[k])
reserveCount++;
if(reserveCount%2!=0)
tempS=-tempS;
result+=tempS;
return;
}
for(int ii=0;ii<=lie;ii++){
if(used[ii]==0){
used[ii]=1;
location[hang]=ii;
data[hang]=arr[hang][ii];
f(hang+1,lie,arr);
used[ii]=0;
}
}
}
int main(){
int hang;
while(true){
result=0;
printf("输入行数\n");
scanf("%d",&hang);
int** arr=new int*[hang];
int i;
for(i=0;i<hang;i++){
arr[i]=new int[hang];
}
data=new int[hang];
used=new int[hang];
location=new int[hang];
for(i=0;i<hang;i++)
used[i]=0;
printf("依次输入各数\n");
for(i=0;i<hang;i++)
for(int j=0;j<hang;j++)
scanf("%d",&arr[i][j]);
f(0,hang-1,arr);
printf("\nvalue= %d\n\n",result);
delete[]data;
delete[]used;
delete[]location;
for(i=0;i<hang;i++){
delete[]arr[i];
}
}
}
/*
5
1 2 3 4 5
0 2 3 4 5
0 0 3 4 5
0 0 0 4 5
0 0 0 0 5
*/
行列式计算
最新推荐文章于 2021-12-23 20:24:39 发布