微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

动态数组大小以计算矩阵的行列式

如何解决动态数组大小以计算矩阵的行列式

基本上,我已经编写了一个程序来计算矩阵的行列式。

但是,这感觉还是很静态的(即,将维作为参数传递)。有什么方法可以使它像指针一样变得更加动态(没有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 举报,一经查实,本站将立刻删除。