我遇到这种奇怪的错误,我编写了一个函数来查找最小子数组和。但是,当数组的值从1到1 2 3 4的大小开始时,这是行不通的。我得到了超时,但是1 2 3 4 5的相同代码给出了正确的答案。如果我在min_sub_array上方放置一条语句print语句,它将为所有值提供正确的答案。值从0到size-1
时也可以正常工作int min_sub_array_sum(int d[], int size)
{
for(int i = 1; i <= size; i++)
d[i] = -d[i];
int max_end_i = d[1], max_so_far = d[1];
for(int i = 2; i <= size; i++)
{
max_end_i += d[i];
if(max_so_far < max_end_i)
max_so_far = max_end_i;
if(max_end_i < 0)
max_end_i = 0;
}
return (-max_so_far);
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
int d[n];
for(int i = 1; i <= n; i++)
cin>>d[i];
cout<<min_sub_array_sum(d, n)<<'\n';
}
}
我应该得到1等于1 2 3 4的值。但是我没有得到。
答案 0 :(得分:1)
您正在访问数组 d [n] 的 nth 索引,该索引不存在。