用行列式的定义方法求解n阶行列式的值(C++)
用行列式的定义方法求解行列式的值,方法肯定不是最简单的,但是觉得有趣。其中要用到全排列的递归算法、逆序数的算法
#include<iostream>
using namespace std;
const int n = 3; //n为行列式的阶数
int z[6][n]; //6为全排列数即n!
int pow(int x, int y); //运算x的y次方
int against(int a[]); //求数组a的逆序数
int fac(int a); //运算a!
void swap(int a[], int i, int j); //交换a[i]和a[j]
void perm(int a[], int p, int q); //将n个数的所有排列储存进二维数组中
int main()
{int a[n][n];int d[n]; //用于储存行数(列数)for (int i = 0; i < n; i++){d[i] = i;}for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){cout << "Please input a[" << i << "]" << "[" << j << "]" << "=";cin >> a[i][j];cin.get();}}perm(d, 0, n - 1);int s;int m = 0;for (int i = 0; i < fac(n); i++) //第一重循环控制排列个数,或加法的个数 {s = 1; //运用行列式定义求出行列式的值for (int j = 0; j < n; j++) //第二重循环控制阶数,或乘法的个数{s = s*a[j][z[i][j]];}m = m + pow(-1, against(z[i]))*s;}for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){printf("%3d", a[i][j]); //为使结构整齐使用C中的printf}cout << endl;}cout << "The value of det is " << m << endl;cin.get();
}
int pow(int x, int y)
{int s = 1;for (; y >= 1; y--)s = s*x;return s;
}
int fac(int a)
{int s = 1;for (; a >= 1; a--)s = s*a;return s;
}
int against(int a[])
{int nn = 0;for (int i = 0; i < n - 1; i++){for (int j = i + 1; j < n; j++){if (a[i] > a[j]){nn++;}else;}}return nn;
}
void swap(int a[], int i, int j)
{int temp;temp = a[i];a[i] = a[j];a[j] = temp;
}
void perm(int a[], int p, int q)
{static int g = 0; //防止g被初始化为0因此用static静态储存方式if (p == q) //p==q时完成一次全排列{for (int i = 0; i < n; i++){z[g][i] = a[i];}g++;}else{for (int i = p; i <= q; i++) //用递归算法完成全排列{swap(a, p, i);perm(a, p + 1, q);swap(a, p, i);}}
}
我的博客:矩阵空间
用行列式的定义方法求解n阶行列式的值(C++)相关推荐
- 线性代数 01.01 n阶行列式的定义
第一章行列式 \color{blue}{第一章 行列式} 主要介绍n阶行列式的定义.性质及计算方法. 主要介绍n阶行列式的定义.性质及计算方法. 介绍用n阶行列式求解n元线性方程组的克拉默(Crame ...
- TensorFlow学习笔记--第三节张量(tensor)及其定义方法
目录 在TensorFlow中,所有的数据通过张量的形式来表示 1张量及属性: 1.1维数(阶) 1.2 形状 1.3数据类型 TensorFlow 支持以下三种类型的张量: **1.常量** **2 ...
- 蓝桥杯 算法训练 ALGO-932低阶行列式计算 python解法
资源限制 内存限制:64.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 给出一个n阶行列式(1<=n<=9),求出 ...
- 使用scheme语言实现n阶行列式值的计算
利用递归计算代数余子式(的值)的思想通过scheme语言来求算n阶行列式的值. <线性代数>第六版同济大学第1章第5节介绍了行列式按行(列)展开的方法,其中提到: 引理: 一个n阶行列式, ...
- 求解n阶方阵的行列式
本文是对姜老师讲解的公式法求解行列式的详述,以及非递归的全排列算法的个人转述. 1.公式法 理解行列式公式法的,可以跳过该部分 行列式(determinant)的定义公式如下图所示,截图来源Deter ...
- 线性代数学习笔记——行列式的性质及拉普拉斯定理——2. n阶行列式的定义
1. 二.三阶行列式的规律观察 2. n阶行列式的定义 3. 行列式与矩阵的区别与联系
- (邱维声)高等代数课程笔记:n 阶行列式的定义
2.2 n 阶行列式的定义 \quad 在 上一节,我们已经定义了 二阶行列式,并根据二阶行列式的特征,抽象出了 n 元排列 的概念.举一个示例,可以看到:二阶行列式可以通过二元排列表示. 例 1: ...
- 用c语言求解n阶线性矩阵方程组,用C语言求解N阶线性矩阵方程Axb简单解法.docx
用C语言求解N阶线性矩阵方程Axb简单解法 用C语言求解N阶线性矩阵方程Ax=b的简单解法一.描述问题:题目:求解线性方程组Ax=b,写成函数.其中,A为n×n的N阶矩阵,x为需要求解的n元未知数组成 ...
- n阶行列式计算----c语言实现(完结)
花了半天时间,写了这个n阶行列式计算的程序,应该算是比较优美吧,有很多地方多次做了优化,程序占用内存不是很大,要是说小吧,也不合适,因为里边有一个递归,而且递归的深度还比较深.时间复杂度具体没有细看, ...
最新文章
- 独家 | 构建符合道德规范的用于人才管理的AI(附链接)
- 结构体对齐原理【转】
- windbg查看设备栈设备树学习总结
- (十二)java版电子商务spring cloud分布式微服务- Spring 4.2.2以上版本和swagger集成方案和踩过的坑...
- Java字符串、文件MD5工具类
- html 常用的标签
- java 编译 器 ide_在没有IDE的情况下编译和运行Java
- 6.4. Test::More
- 1.10 编程基础之简单排序 10 单词排序 python
- latex 插图排版
- Ubuntu16.04安装为知笔记(WizNote)
- 数据结构——顺序表的C语言代码实现
- ev3pid巡线_基于LEGO使用PID算法进行单光巡线机器人设计的心得体会
- js生成java uuid_JS生成UUID
- TV_Control Android机顶盒手机控制全套程序开源
- 人际关系差不能当跳槽理由,原因在这里
- 实例003 输出名言
- (10)python中的赋值方法
- 美国互联网影视的盈利模式 —— Netflix模式
- 牛客 小米校招 计算题 单调栈 接雨水
热门文章
- docker删除容器
- c语言char str什意思,C语言中,charstr的str到底表示什么?
- 测试人生 | 为了娃的奶粉钱,测试媛妈妈拿出考研的拼劲,半年终圆大厂梦!
- Integrated Skills of English_Unit2_Why My Great-uncle Gave Up the Ministry
- 运动耳机品牌排行榜有哪些,排行前五的运动耳机推荐
- 一政网给了我公考上岸的机会
- Linux怎么完全删除一个用户
- icon小图标的使用
- 成功8要素Unveiling the Secrets of success in 8 words – Richard St. John’s 4 minute TED talk
- 电脑黑屏无法启动怎么办