如何在一组1和0中找到一组的开始和结束索引

时间:2016-10-17 21:45:21

标签: c++

我如何找到一组的开始和结束索引。我已尝试使用嵌套的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};

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,重复