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

インデックスが値よりも小さい要素を配置するために必要な操作の数をカウントするC++プログラム


n個の要素を持つ配列Aがあるとします。これらの操作は何度でも実行できます-

  • 任意の正の整数kを選択します

  • シーケンス内の任意の位置を選択し、その位置にkを挿入します

  • そのため、シーケンスが変更され、次の操作でこのシーケンスに進みます。

条件を満たすために必要な操作の最小数を見つける必要があります:A [i]<=0からn-1の範囲のすべてのiに対してi。

したがって、入力がA =[1、2、5、7、4]の場合、出力は3になります。これは、[1,2,5,7,4]から[1]のような操作を実行できるためです。 、2,3,5,7,4]から[1,2,3,4,5,7,4]から[1,2,3,4,5,3,7,4]。

ステップ

これを解決するには、次の手順に従います-

maxj := 0
n := size of A
for initialize i := 0, when i < n, update (increase i by 1), do:
   maxj := maximum of maxj and (A[i] - i - 1)
return maxj

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;

int solve(vector<int> A) {
   int maxj = 0;
   int n = A.size();
   for (int i = 0; i < n; i++) {
      maxj = max(maxj, A[i] - i - 1);
   }
   return maxj;
}
int main() {
   vector<int> A = { 1, 2, 5, 7, 4 };
   cout << solve(A) << endl;
}

入力

{ 1, 2, 5, 7, 4 }

出力

3

  1. C++でバイナリ行列をゼロ行列に変換する演算の数をカウントするプログラム

    バイナリ行列があるとします。ここで、1つのセルを取得し、そのセルとそのすべての隣接セル(上、下、左、右)を反転する操作について考えてみます。行列に0のみが含まれるように、必要な操作の最小数を見つける必要があります。解決策がない場合は、-1を返します。 したがって、入力が次のような場合 0 0 1 0 その場合、出力は3になります。 これを解決するには、次の手順に従います- サイズの配列ディレクトリを定義します:4 x 2:={{1、0}、{0、1}、{-1、0}、{0、-1}} const int inf =10 ^ 6 関数getP

  2. C++のソートされた行列でx以下の要素をカウントします

    サイズnxnの行列、整数変数xが与えられます。また、行列内の要素は並べ替えられた順序で配置され、タスクは次の要素の数を計算することです。 x以下です。 入力 − matrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {6, 7, 8}} and X = 4 出力 − count is 4 説明 −行列データを値xと一致させる必要があるため、x以下の要素、つまり4は1、2、3、4です。したがって、カウントは4です。 入力 − matrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {6, 7, 8}} and X = 0 出力 − co