我想将动态大小的2D数组作为参数传递给函数。我知道这个问题已经在很多地方被多次讨论过,但即使应用了[]和*的所有排列和组合,我也无法让它发挥作用。
#include<iostream>
#include<algorithm>
using namespace std;
int bestpath(int *A, int N, int x, int y)
{ if(x>= N || y>=N)
return 0;
if(x == y == N-1)
return 0;
int value= A[x][y]; // Error: Invalid type 'int[int]' for array subscript.
value+= max(bestpath(A, x+1, y, N), bestpath(A, x, y+1, N));
return value;
}
int main()
{ int T, N, i, j, k;
cin>>T;
for(i=0; i<T; i++)
{ cin>>N;
int A[N][N];
for(j=0; j<N; j++)
{ for(k=0; k<N; k++)
{ cin>>A[j][k];
}
}
int ans= bestpath(&A[N][N], N, 0, 0);
cout<<ans<<endl;
}
return 0;
}
错误发生在指示的行中。
如果我将功能定义更改为 -
int bestpath(int *A[], int N, int x, int y)
错误来自函数调用:无法将int *转换为int **。 我想让我的基础知识清楚地使用* A,* A [],** A以及我们传递矩阵的任何其他方式。 还有其他更好的方法吗?
答案 0 :(得分:1)
只需将该功能称为:
int ans= bestpath(A, N, 0, 0);
并将您的函数声明更改为:
int bestpath(int A[N][N], int x, int x, int y);
你需要移动代码才能进一步编译,这里是online sample。