行列式

行列式

之前有一个朋友问了我这样一道题:
在这里插入图片描述
这个显然是很简单的,于是我写了一个就给了过去,代码如下:

#include<stdio.h>
int main()
{
/**************************函数参数********************************************
*x				目标数组 
*result			所求值 
*i,j
 			临时变量 
*******************************************************************************/
	int x[3][3];
	int i,j;
	int result=0;																			
	
	/*输入*/
	for(i=0;i<3;i++)
		for(j=0;j<3;j++)
			scanf("%d",&x[i][j]);
			
	/*求值【这里我没有管算法,用最简单的傻瓜算法就行,有空你可以去想他的通用算法】*/		
	result=x[0][0]*x[1][1]*x[2][2]+x[0][1]*x[1][2]*x[2][0]+x[0][2]*x[1][0]*x[2][1]-x[0][2]*x[1][1]*x[2][0]-x[0][1]*x[1][0]*x[2][2]-x[0][0]*x[1][2]*x[2][1];	
			
			
	/*打印*/		
	printf("%d",result);
	
	return 0;				
 } 
  @ RoboMaster!十兮

但是有意思的是后来,我的朋友问我对于n阶矩阵又该如何求取。于是我想了想,写出来以下代码:

#include<stdio.h>
#define	NUM 4
int main()
{
/**************************函数参数********************************************
@作用:				计算NUM*NUM的矩阵的行列式	 
*matrix[]			所求数组 
*NUM				宏定义,代表NUM*NUM的二维数组 
*pro[]				储存各项之积的中间变量 
*sum[]				储存各项之积 
*i,j,k,l			temporary variable
*******************************************************************************/	
	int matrix[NUM][2*NUM-1];
	int sum[2]={0,0};
	int pro[NUM];
	int i,j;
	
	/*输入*/ 
	for(i=0;i<NUM;i++)
		for(j=0;j<NUM;j++)
			scanf("%d",&matrix[i][j]);			  		
	
	/*平移数组项*/		
	for(i=1;i<NUM;i++)
		for(j=0;j<i;j++)
			matrix[i][j+NUM]=matrix[i][j];
	
	/*初始化pro[]*/		
	for(i=0;i<NUM;i++)
		pro[i]=1;
	
	/*求积之和*/
	for(i=0;i<NUM;i++){
		for(j=0;j<NUM;j++)
			pro[i]=matrix[j][i+j]*pro[i];
		sum[0]=sum[0]+pro[i];	
	}
		
	/*这里和上面一样,注释参考上文*/		
	for(i=0;i<NUM-1;i++)
		for(j=0;j<NUM-1-i;j++)
			matrix[i][j+NUM]=matrix[i][j];
	
	for(i=0;i<NUM;i++)
		pro[i]=1;
			
	for(i=0;i<NUM;i++){
		for(j=0;j<NUM;j++)
			pro[i]=matrix[j][NUM-1+i-j]*pro[i];
		sum[1]=sum[1]+pro[i];
	}
			
	/*打印*/		
	printf("%d",sum[0]-sum[1]);		  	
	
	return 0;			 			  			  
}
  @ RoboMaster!十兮

觉得挺有意思的,所以就分享一下了。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页