我如何找到一组的开始和结束索引。我已尝试使用嵌套的if语句进行一些错综复杂的尝试,但没有成功。是否存在处理此类问题的算法或是否具有名称。谢谢。
int arr[32] = {0,1,1,1,1,0,0,0,
1,1,1,0,0,0,0,0,
1,1,0,1,0,0,0,1,
0,0,0,0,0,1,1,1};
答案 0 :(得分:0)
我怀疑这个算法有特定的名称,但这里考虑的是变体:
int i = 0;
while (i < 32) {
while (i < 32 && arr[i] == 0) i++;
if (i < 32) {
cout << "Found start index " << i << endl;
while (i < 32 && arr[i] == 1) i++;
cout << "Found end index " << (i - 1) << endl;
}
}
// of course move 32 to local variable outside the loop
主要想法:跳过全0,如果我们还没到达阵列末尾 - 找到所有1,重复