行列式计算C++

行列式计算C++,第1张

#include
using namespace std;
double cal(double** det, int n)/*二维数组调用函数,
详见 https://blog.csdn.net/poinsettia/article/details/109675513?utm_source=app&app_version=5.3.0&code=app_1562916241&uLinkId=usr1mkqgl919blen*/
{
	double detVal = 0;//行列式值
	if (n == 1)//递归终止条件 
		return det[0][0];
	double** tempdet = new double* [n - 1];//用来存储余相应的余子式,行列式阶数会--
	for (int i = 0; i < n - 1; i++)
		tempdet[i] = new double[n - 1];
	for (int i = 0; i < n; i++)//第一重循环,行列式按第一行展开 
	{
		for (int j = 0; j < n - 1; j++)//求低阶行列式各元素值
			for (int k = 0; k < n - 1; k++)
			{
				if (k < i)
					tempdet[j][k] = det[j + 1][k];//附图一
				else
					tempdet[j][k] = det[j + 1][k + 1];//附图二
			}
		detVal += det[0][i] * pow(-1.0, i) * cal(tempdet, n - 1);

	}
	return detVal;
}
int main()
{
	int n;
	while (cin >> n)//输入行列式的阶数 
	{
		double** det = new double* [n];//二维数组动态定义 ,一维数组则是int *det=new double [n]
		for (int i = 0; i < n; i++)
			det[i] = new double[n];//按行分配内存
		for (int i = 0; i < n; i++)
			for (int j = 0; j < n; j++)
				cin >> det[i][j];//输入行列式
		cout << cal(det, n);
	}
}

改编于博主一只没有情感的机器猪

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/674913.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)

保存