在下面的代码中,lis是一个数组以及具有相同返回类型(int)的函数名称,我没有收到任何错误,有人可以解释后台发生了什么吗?为什么编译器没有显示错误?
int lis( int arr[], int n )
{
int lis[n];
lis[0] = 1;
for (int i = 1; i < n; i++ )
{
lis[i] = 1;
for (int j = 0; j < i; j++ )
if ( arr[i] > arr[j] && lis[i] < lis[j] + 1)
lis[i] = lis[j] + 1;
}
答案 0 :(得分:0)
它与变量名无关! 您无法动态定义函数中的列表。
您必须这样编写代码:
int lis(int arr[], int n)
{
int *lis = new int[n];
lis[0] = 1;
for (int i = 1; i < n; i++)
{
lis[i] = 1;
for (int j = 0; j < i; j++)
if (arr[i] > arr[j] && lis[i] < lis[j] + 1)
lis[i] = lis[j] + 1;
}
delete[] lis;
return 0;
}