C プログラムで、同じ頻度の要素を持つ配列範囲クエリを変換します
ここで興味深い質問があります。 N 個の要素を持つ配列があります。次のようにクエリ Q を実行する必要があります。
Q(start, end) は、最初から最後まで、数値 "p" が正確に "p" 回出現することを意味します。 p>
つまり、配列が {1, 5, 2, 3, 1, 3, 5, 7, 3, 9, 8} で、クエリが -
Q( 1 , 8) - ここでは 1 が 1 回現れ、3 が 3 回現れます。したがって、答えは 2
Q(0, 2) です。ここでは 1 が 1 回現れます。したがって、答えは 1
Algorithm
query(s, e) -
Begin get the elements and count the frequency of each element ‘e’ into one map count := count + 1 for each key-value pair p, do if p.key = p.value, then count := count + 1 done return count; End
Example
#include <iostream> #include <map> using namespace std; int query(int start, int end, int arr[]) { map<int, int> freq; for (int i = start; i <= end; i++) //get element and store frequency freq[arr[i]]++; int count = 0; for (auto x : freq) if (x.first == x.second) //when the frequencies are same, increase count count++; return count; } int main() { int A[] = {1, 5, 2, 3, 1, 3, 5, 7, 3, 9, 8}; int n = sizeof(A) / sizeof(A[0]); int queries[][3] = {{ 0, 1 }, { 1, 8 }, { 0, 2 }, { 1, 6 }, { 3, 5 }, { 7, 9 } }; int query_count = sizeof(queries) / sizeof(queries[0]); for (int i = 0; i < query_count; i++) { int start = queries[i][0]; int end = queries[i][1]; cout << "Answer for Query " << (i + 1) << " = " << query(start, end, A) << endl; } }
Output
Answer for Query 1 = 1 Answer for Query 2 = 2 Answer for Query 3 = 1 Answer for Query 4 = 1 Answer for Query 5 = 1 Answer for Query 6 = 0
以上がC プログラムで、同じ頻度の要素を持つ配列範囲クエリを変換しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









以下に、ローマ数字を 10 進数に変換する C 言語アルゴリズムを示します。 アルゴリズム ステップ 1 - 開始 ステップ 2 - 実行時にローマ数字を読み取る ステップ 3 - 長さ: = strlen(roman) ステップ 4 - i=0 から長さ-1 の場合 ステップ4.1-switch(roman[i]) ステップ 4.1.1-case'm': &nbs

辞書編集的な文字列比較とは、文字列が辞書順に比較されることを意味します。たとえば、「apple」と「appeal」という 2 つの文字列がある場合、「app」の最初の 3 文字が同じであるため、最初の文字列が最後に来ます。次に、最初の文字列の文字は「l」で、2 番目の文字列の 4 番目の文字は「e」になります。 「e」は「l」より短いため、辞書順に並べ替えると最初に表示されます。文字列は配置される前に辞書順に比較されます。この記事では、C++ を使用して 2 つの文字列を辞書編集的に比較するためのさまざまな手法を見ていきます。 C++ 文字列での Compare() 関数の使用 C++string オブジェクトには Compare() があります。

双曲線関数は、円の代わりに双曲線を使用して定義され、通常の三角関数と同等です。ラジアン単位で指定された角度から双曲線正弦関数の比率パラメーターを返します。しかし、その逆、つまり別の言い方をすればいいのです。双曲線正弦から角度を計算したい場合は、双曲線逆正弦演算のような逆双曲線三角関数演算が必要です。このコースでは、C++ で双曲線逆サイン (asinh) 関数を使用し、ラジアン単位の双曲線サイン値を使用して角度を計算する方法を説明します。双曲線逆正弦演算は次の式に従います -$$\mathrm{sinh^{-1}x\:=\:In(x\:+\:\sqrt{x^2\:+\:1})}ここで\:In\:is\:自然対数\:(log_e\:k)

リンク リストは動的なメモリ割り当てを使用します。つまり、リンク リストはそれに応じて拡大および縮小します。これらはノードのコレクションとして定義されます。ここで、ノードにはデータとリンクという 2 つの部分があります。データ、リンク、リンクリストの表現は以下のとおりです。 ・リンクリストの種類 リンクリストには以下の4種類があります。 ・シングルリンクリスト/シングルリンクリスト ダブル/ダブルリンクリスト 循環シングルリンクリスト 循環ダブルリンクリスト再帰的メソッドを使用してリンク リストの長さを確認します。ロジックは -intlength(node *temp){ if(temp==NULL) returnl; else{&n

名前変更機能は、ファイルまたはディレクトリを古い名前から新しい名前に変更します。この操作は移動操作と似ています。したがって、この名前変更機能を使用してファイルを移動することもできます。この関数は、stdio.h ライブラリ ヘッダー ファイルに存在します。 rename 関数の構文は次のとおりです: intrename(constchar*oldname,constchar*newname); rename() 関数は 2 つのパラメータを受け取ります。 1 つは古い名前、もう 1 つは新しい名前です。どちらのパラメータも、ファイルの古い名前と新しい名前を定義する定数文字へのポインタです。ファイルの名前が正常に変更された場合はゼロを返し、それ以外の場合はゼロ以外の整数を返します。名前変更操作中

マップは C++ の特別なタイプのコンテナで、各要素は 2 つの値、つまりキー値とマップ値のペアです。キー値は各項目のインデックス付けに使用され、マップされた値はキーに関連付けられた値です。マップされた値が一意であるかどうかに関係なく、キーは常に一意です。 C++ でマップ要素を出力するには、反復子を使用する必要があります。項目のセット内の要素は、反復子オブジェクトによって示されます。イテレータは主に配列や他のタイプのコンテナ (ベクトルなど) で使用され、特定の範囲内の特定の要素を識別するために使用できる特定の操作セットを備えています。イテレータをインクリメントまたはデクリメントして、範囲またはコンテナ内に存在するさまざまな要素を参照できます。イテレータは、範囲内の特定の要素のメモリ位置を指します。イテレータを使用して C++ でマップを出力する まず、定義方法を見てみましょう。

Strncmp は、string.h ファイル内に存在する定義済みライブラリ関数で、2 つの文字列を比較し、どちらの文字列が大きいかを表示するために使用されます。 strcmp 関数 (文字列比較) この関数は 2 つの文字列を比較します。 2 つの文字列内の最初の不一致文字の ASCII 差異を返します。構文 intstrcmp(string1,string2); 差がゼロに等しい場合は、string1=string2 となります。差が正の場合、文字列 1 > 文字列 2 になります。差が負の場合は、string1<string2 となります。 strncmp 関数の例 この関数は、2 つの文字列の最初の n 文字を比較するために使用されます。構文 strn

現代科学は、複数の数の概念に大きく依存しています。この概念は、17 世紀初頭にジローラモ カルダーノによって初めて確立され、16 世紀に導入されました。複素数の公式は a+ib です。ここで、a は HTML コードを保持し、b は実数です。複素数には、実数部 <a> と虚数部 (<ib>) の 2 つの部分があると言われます。 i または iota の値は √-1 です。 C++ の複数形クラスは、複素数を表すために使用されるクラスです。 C++ の複合クラスは、いくつかの複素数演算を表現および制御できます。複数の数値を表現し、表示を制御する方法を見てみましょう。 imag() メンバー関数 上で述べたように、複素数は実数部と虚数部で構成されます。実数部を表示するには、real() を使用します。
