C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++を使用してすべての要素を0にするための配列に対する操作の最小数。


問題の説明

サイズNの配列があり、各要素が1または0の場合、タスクは、すべての要素をゼロに変換するために実行される操作の最小数を計算することです。以下の操作を実行できます-

要素が1の場合、その値を0に変更してから-

  • 次の連続する要素が1の場合、自動的に0に変換されます

  • 次の連続する要素がすでに0の場合、何も起こりません。

If arr[] = {1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1} then 4
operation are required to make all elements zero

アルゴリズム

1.If the current element is 1 then increment the count and search for the next 0 as all consecutive 1’s will be automatically converted to 0.
2. Return final count

#include <iostream>
#define SIZE(arr) (sizeof(arr) / sizeof(arr[0]))
using namespace std;
int performMinOperation(int *arr, int n){
   int i, cnt = 0;
   for (i = 0; i < n; ++i) {
      if (arr[i] == 1) {
         int j;
         for (j = i + 1; j < n; ++j) {
            if (arr[j] == 0) {
               break;
            }
         }
         i = j - 1;
         ++cnt;
      }
   }
   return cnt;
}
int main(){
   int arr[] = {1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1};
   cout << "Minimum required operations = " << performMinOperation(arr, SIZE(arr)) << endl;
   return 0;
}

出力

上記のプログラムをコンパイルして実行する場合。次の出力を生成します-

Minimum required operations = 4

  1. C++で配列のすべての要素を同じにするための最小限の削除操作。

    問題の説明 要素が繰り返されるようなn個の要素の配列が与えられます。配列から任意の数の要素を削除できます。タスクは、配列から削除する要素の最小数を見つけて、配列を等しくすることです。 arr[] = {10, 8, 10, 7, 10, -1, -4, 12} すべての配列要素を同じにするには、強調表示された5つの要素を削除する必要があります。 アルゴリズム 1. Count frequency of each element 2. Find maximum frequecy among the frequencies. Let us call this as maxFrequncy 3.

  2. Pythonですべての配列要素を等しくするために必要な操作の数

    要素の配列を指定しました。要素を1ずつインクリメントして、すべてを等しくする必要があります。各ステップでn-1個の要素をインクリメントできます。私たちの目標は、すべての配列要素を等しくするために必要な操作の総数を計算することです。 たとえば、リスト[1、2、3]を取得する場合、すべての要素を等しくするために3つの操作が必要でした。この問題の1つの解決策はです。各ステップで最上位の数字を見つけ、残りの要素を1ずつ増やします。コードを書いてみましょう。 例 def main():    # intializing the array    arr = [1,