下面我写了一个C++函数,它通过一个整数向量进行循环。每通过一次,它就从所有的数字中减去最小的数字。它应该在每次传递时返回非零元素的数量(这存储在向量结果中并返回)。然而,每当我尝试运行时,我都会得到“std::bad_alloc”。当删除行“flag=true”时,错误就会消失。我将需要它工作,以便while循环中断。帮我修好这个。
vector<int> cutTheSticks(vector<int> arr) {
int flag=true, min, count;
vector<int> result;
while(flag)
{
min = arr[0];
flag = false;
count = 0;
for(int i=1; i<arr.size(); i++)
{
if(arr[i]<min)
{
min=arr[i];
}
}
for(int i=0; i<arr.size(); i++)
{
if(arr[i]!=0)
{
count++;
flag = true;
}
arr[i] = arr[i]-min;
}
result.push_back(count);
}
return result;
}
考虑输入[0,1]
。
最小值是0,所以从每个元素中减去0(不做任何操作)。由于第二个元素是1(而不是0),您设置flag=true
。
除了推回到result
向量之外,此循环中没有任何更改。因此循环将重复,直到vector
耗尽内存(或超过其max_size
)。