【发布时间】:2021-10-31 03:47:42
【问题描述】:
将数组的维度传递给函数,但仍然出错!
代码(您可以直接向下滚动到它给出的错误并仅查看代码中的那些行)
class Solution {
public:
int mod = 1e9 + 7;
int checkRecord(int n) {
int dp[n + 1][2][3];
memset(dp, -1, sizeof(dp));
return helper(0, 1, 2, n + 1, 2, 3, dp);
}
int helper(int idx, int A, int startL, int N, int M, int K, int dp[N][M][K]) {
if(idx == N) return;
if(dp[idx][A][startL] != -1) {
return dp[idx][A][startL];
}
dp[idx][A][startL] = helper(idx + 1, A, 2, N, M, K, dp) % mod;
if(startL > 0) {
dp[idx][A][startL] += helper(idx + 1, A, startL - 1, N, M, K, dp) % mod;
}
return dp[idx][A][startL];
}
};
错误
error: cannot initialize a parameter of type 'int (*)[*][*]' with an lvalue of type 'int [n + 1][2][3]'
return helper(0, 1, 2, n + 1, 2, 3, dp);
^~
note: passing argument to parameter 'dp' here
int helper(int idx, int A, int startL, int N, int M, int K, int dp[][M][K]) {
^
【问题讨论】:
-
Why aren't variable-length arrays part of the C++ standard? 请改用
std::vector。您还可以使用std::array和固定大小数组的模板。 -
是的,但是 3d 矢量太多了,无法输入矢量
-
考虑到
using namespace std;is a bad habit,它甚至不止于此。但是欢迎来到 C++ 编程的世界,这是我们所有人都必须忍受的。 :) -
还有未定义的行为,因为您不会一直从
helper返回值。
标签: c++ arrays multidimensional-array