更大行列式
问题描述:
给定一个 3 行、3 列的矩阵 A 和一个 2 行、2 列的矩阵 B。计算矩阵 A 和矩阵 B 的行列式并输出其中较大的一个数。
输入格式:
测评机会反复运行你的程序。每次程序运行时,输入为前三行,每行包括 3 个空格分隔开的符合描述的正整数,组成了 3×3 的矩阵 A。之后两行,每行包括 2 个空格分隔开的符合描述的正整数,组成了 2×2 的矩阵 B。(输入矩阵中的所有元素均大于等于 −50 小于等于 50)
输出格式:
输出两个行列式中较大的一个,共一个整数,占一行。
样例输入:
1 -1 1
2 2 -1
3 4 5
24 9
1 3
样例输出:
63
解题思路:
对于二阶行列式的计算,计算公式简短,可以直接使用正对角线之积减去反对角线之积求出值;而三阶行列式计算公式复杂,为了简化矩阵下角标的取值规律,将原本的 33 的矩阵写为 35 的矩阵,第四列的值与第一列的值相同,第五列的值与第二列的值相同,这样三阶行列式的计算就可以转换为有规律的坐标变化了,如下图所示
此时三阶行列式的值为红色积的和减去绿色积的和。
编码实现:
#include <stdio.h>
int main() {
// 获取三阶行列式
int arr_3[3][5];
for(int i = 0; i < 3