2016-10-17 3 views
-2

1のグループの先頭と末尾のインデックスをどのようにして見つけることができますか?私はネストされたifステートメントでいくつかの複雑な試みを試みてきており、成功していません。このタイプの問題を扱うアルゴリズムがあるか、名前を持っていますか?ありがとう。1と0の集合で1のグループの先頭と末尾のインデックスを見つける方法

私は、このアルゴリズムは、特定の名前を持っているが、ここで考慮すべき変種であることを疑う
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

おそらく 'std :: find'? – user463035818

+0

アイデアのためのルックアップRLLエンコーディング – cmd

+2

最初のグループは最初のグループから始まり、次の0の直前で終了します。次のグループは次の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をスキップする - すべて見つけるに1s、repeat

関連する問題