如何解决动态数组大小以计算矩阵的行列式
基本上,我已经编写了一个程序来计算矩阵的行列式。
但是,这感觉还是很静态的(即,将维作为参数传递)。有什么方法可以使它像指针一样变得更加动态(没有vector
?)
#include <bits/stdc++.h>
using namespace std;
#define N 4
void getCofactor(int mat[N][N],int temp[N][N],int p,int q,int n)
{
int i = 0,j = 0;
for (int row = 0; row < n; row++)
{
for (int col = 0; col < n; coL++)
{
if (row != p && col != q)
{
temp[i][j++] = mat[row][col];
if (j == n - 1)
{
j = 0;
i++;
}
}
}
}
}
int determinantOfMatrix(int mat[N][N],int n)
{
int D = 0;
if (n == 1)
return mat[0][0];
int temp[N][N];
int sign = 1;
for (int f = 0; f < n; f++)
{
getCofactor(mat,temp,f,n);
D += sign * mat[0][f] * determinantOfMatrix(temp,n - 1);
sign = -sign;
}
return D;
}
解决方法
无法将指针传递给动态大小的数组。而且,数组的内部尺寸始终不能是动态的。
您可以做的是使用一维动态数组,像往常一样将指针传递到该数组的元素,并依次存储行,并根据作为数组传递的行大小计算索引。这样得到的布局与数组的布局相同,但是“虚拟”维可以是动态的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。