C++で右側にあるNGEの数
ターゲット要素の配列とインデックスが与えられます。右側の指定された要素よりも大きい要素の数を数える必要があります。例を見てみましょう。
入力
arr = [2, 3, 5, 1, 4, 2, 6] index = 3
出力
3
ターゲットインデックス要素は1です。右側に1より大きい3つの要素、つまり...、4、2、6があります。
アルゴリズム
- ターゲット要素の配列とインデックスを初期化します。
- インデックスが配列の長さ以上の場合は、-1を返します。
- 指定されたインデックスの次の要素から繰り返すループを記述します。
- 要素がターゲット要素よりも大きい場合は、カウントを増やします。
- カウントを返します。
実装
以下は、C++での上記のアルゴリズムの実装です
#include <bits/stdc++.h> using namespace std; int getNextGreaterElementsCount(int arr[], int n, int index) { if (index >= n) { return -1; } int count = 0; for (int i = index + 1; i < n; i++) { if (arr[index] < arr[i]) { count += 1; } } return count; } int main() { int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; int n = 8, index = 1; cout << getNextGreaterElementsCount(arr, n, index) << endl; return 0; }
出力
上記のコードを実行すると、次の結果が得られます。
6
-
C++で配布されるテディの総数を最小限に抑えます
問題の説明 N人の学生と、学生が取得したマークを表す配列が与えられます。学校は彼らに価格としてテディを与えるために殺害しました。しかし、学校はお金を節約したいので、次の制約を課すことによって、配布されるテディの総数を最小限に抑えます- すべての生徒は少なくとも1つのテディを取得する必要があります 2人の生徒が隣り合って座っている場合、点数の高い生徒はもっと多くの生徒を獲得する必要があります 2人の生徒が同じ点数を持っている場合、異なる数のテディを取得できます 例 3人の生徒がいて、取得したマークが配列で-として表されているとします。 arr[] = {2, 3, 3} So, to
-
C++のCHAR_BIT
CHAR_BITは、charのビット数です。これは、C++言語の「limits.h」ヘッダーファイルで宣言されています。 1バイトあたり8ビットです。 これがC++言語のCHAR_BITの例です 例 #include <bits/stdc++.h> using namespace std; int main() { int x = 28; int a = CHAR_BIT*sizeof(x); stack<bool> s; cout << "T