小编Adv*_* GS的帖子

查找 C++ 二维数组的行列式时出错

我正在使用 C++ 和 g++(版本 13.2.1),并且我正在创建一个Determinant<m>接受std::array<std::array<int,m>,m>参数类型并返回该矩阵的行列式的函数。

\n

以下是我写的代码。

\n

行列式:

\n
template <int m>\nint Determinant(std::array<std::array<int,m>,m> arr){\n\n    if(m == 2){\n      return arr[0][0]*arr[1][1] - arr[0][1]*arr[1][0];\n    }else if(m >2){\n      int ans = 0;\n      for(int i =0;i < m;i++){\n        ans += arr[0][i]*Determinant<m-1>(slc<m,m>( arr,i,0 ))*(i%2 ? 1:-1);\n      }\n      return ans;\n    }else{\n      return -1;\n\n    }\n  }\n
Run Code Online (Sandbox Code Playgroud)\n

slc :返回一个切片(不是真正的切片,只是删除一行和一列)

\n
template <int m, int n>\nstd::array<std::array<int,(n-1)>,(m-1)> slc(std::array<std::array<int,n>,m> arr, int i,int j){\n  std::array<std::array<int,(n-1)>,(m-1)> ans;\n\n  for(int x = 0;x < m;x ++){\n    for (int y = …
Run Code Online (Sandbox Code Playgroud)

c++ recursion templates matrix determinants

2
推荐指数
1
解决办法
78
查看次数

标签 统计

c++ ×1

determinants ×1

matrix ×1

recursion ×1

templates ×1