-
カクテルソート用のC++プログラム?
カクテルソートは、安定したソートアルゴリズムであり、双方向バブルソート、カクテルシェーカーソート、シェーカーソート(選択ソートの変形を指すこともあります)、リップルソート、シャッフルソートとも呼ばれる比較ソートの両方であるバブルソートのバリエーションです。 、またはシャトルソート。アルゴリズムは、リストを通過するたびに両方向にソートされるという点で、バブルソートとは異なります。 Input:53421 Output:12345 説明 カクテルでは、並べ替え配列は並べ替えられていない要素で構成されます。カクテルソートは、リストを通過するたびに両方向で機能します。バブルソートを使用して配列を前
-
2つの数の最大公約数のためのC++プログラム?
2つの数値の公約数は、両方の除数である数値です。 たとえば、 12の約数は1、2、3、4、6、12です。 18の約数は1、2、3、6、9、18です。 したがって、12と18の公約数は1、2、3、6です。 これらの中で最大のものは、おそらく当然のことながら、12と18の最大公約数と呼ばれます。2つの整数aとbの最大公約数の通常の数学表記は、(a、b)で表されます。したがって、(12、18)=6です。 最大公約数は多くの理由で重要です。たとえば、2つの数値のLCM、つまりこれらの数値の倍数である最小の正の整数を計算するために使用できます。数値aとbの最小公倍数は、ab(a、b)として計
-
コムソート用のC++プログラム?
コムソートは、バブルソートやカクテルソートに似ています。コムソートは、隣接する要素を調べることから始めるのではなく、特定の数のインデックスを離して要素を調べることから始まります。これはギャップと呼ばれます。ギャップは[n/c]として定義されます。ここで、nは要素の数、cは収縮率です。各反復の後、この数値はcで除算され、最終的にアルゴリズムが隣接する要素を調べるまでフロアになります。 Input:53421 Output:12345 説明 コムソートは、[n / c]として定義されるギャップを持つ2つの要素を比較します。ここで、nは要素の数、cは収縮係数、つまり1.3です。各反復の後、この数値
-
2つ以上(または配列)の数値のGCD用のC ++プログラム?
2つの数値の公約数は、両方の除数である数値です。 たとえば、12の約数は1、2、3、4、6、12です。18の約数は1、2、3、6、9、18です。したがって、12と18の公約数は1、2です。 、3、6。これらの中で最大のものは、おそらく当然のことながら、12と18のと呼ばれます。2つの整数aとbの最大公約数の通常の数学表記は、(a、b)で表されます。したがって、(12、18)=6です。 最大公約数は多くの理由で重要です。たとえば、2つの数値、つまりこれらの数値の倍数である最小の正の整数を計算するために使用できます。数値aとbの最小公倍数は、a * b *(a、b)として計算できます。 たと
-
ノームソート用のC++プログラム?
ノームソートは、バブルソートのように、要素を適切な場所に移動することが一連のスワップによって実行されることを除いて、挿入ソートに似たソートアルゴリズムです。 Input: 53421 Output: 12345 説明 要素を適切な場所に移動するソートアルゴリズムは、バブルソートの場合と同様に、一連のスワップによって実行されます。単にループが必要です。 例 #include <iostream> using namespace std; int main() { int temp; int arr[] = { 5, 3, 4, 2
-
Xで割り切れる最大のK桁の数値のC++プログラム?
2つの整数XとKが与えられます。 Kは整数の桁数です。論理は、Xで割り切れる最大のK桁の数字を見つけることです。 Input: X = 30, K = 3 Output: 980 説明 980は、30で割り切れる最大の3桁の数値です。Kを10の累乗として、1を引くと、最大のK桁の数値が得られます。その後、最大の数値を取得しようとします。これはXで除算されます。 例 #include <iostream> #include <math.h> using namespace std; int main() { int X = 20;
-
更新なしの範囲合計クエリ用のC++プログラム?
インデックスiからインデックスjまでの要素の合計を計算する必要があります。 iとjのインデックス値で構成されるクエリは複数回実行されます。 Input:arr[] = {5, 6, 3, 4, 1 } i = 1, j =3 Output: 13 説明 6 + 3 + 4 = 13 sum[] = {5, 6+5, 3+6+5, 4+3+6+5, 1+4+3+6+5 } sum[]={5,11,14,18,19} sum[j]-sum[i-1]=sum[3]-sum[1-1]= sum[3]-sum[0]=18-5=13 このロジックは、iインデックスからjインデックスまでのループを開
-
再帰的なバブルソートのためのC++プログラム?
バブルソートでは、隣接するペアを比較し、順序が間違っている場合はそれらを交換します。このタイプのバブルソートでは、それ自体を呼び出す再帰関数を使用します。 Input:53421 Output:12345 説明 再帰(自己呼び出し)関数を使用すると、隣接するペアが比較され、配列が整うまで順序が間違っている場合は交換されます 例 #include <iostream> using namespace std; void bubbleSort(int arr[], int n) { for (int i = 0; i < n - 1; i++) { &
-
C ++:競技プログラミングにおけるコード短縮の方法?
このセクションでは、競技プログラミングのためのコード短縮戦略の例をいくつか紹介します。大量のコードを書かなければならないとしましょう。そのコードでは、いくつかの戦略に従って、それらをより短くすることができます。 タイプ名を変更して短くすることができます。アイデアを得るためにコードを確認してください サンプルコード #include <iostream> using namespace std; int main() { long long x = 10; long long y = 50; cout &
-
STLに関連するC++の隠されたトリック
ここでは、STLに関連するC++の隠されたトリックをいくつか見ていきます。 中かっこ「{}」を使用してペアの値を割り当てます。それらを使用してタプルに割り当てることもできます。 pair<int, int> my_pair = make_pair(10, 20); pair<int, int> my_pair2 = { 10, 20 }; //using braces pair<int, <char, int> > my_pair3 = { 10, { 'A', 20 } }; //complex pair ヘッダーをたくさん
-
C++での配列に対するベクトルの利点
ここでは、C++の配列に対するベクトルの長所と短所をいくつか見ていきます。 ベクトルはテンプレートクラスです。これはC++のみの構造です。配列は組み込みの言語構造です。配列はさまざまな言語で存在します。 ベクトルはリストインターフェイスを備えた動的配列として実装され、配列はプリミティブデータ型を使用した静的または動的な方法を使用して実装できます。 例 #include<iostream> #include<vector> using namespace std; int main() { int array[10]; //sta
-
C++で指定された値になるすべての一意のトリプレット
ここで、1つの興味深い問題が発生します。いくつかの要素を持つ配列があります。 1つの合計値が与えられます。私たちのタスクは、配列からトリプレットを見つけることであり、その合計は指定された合計と同じです。配列が{4、8、63、21、24、3、6、1、0}であり、合計値がS =18であると仮定します。したがって、トリプレットは{4、6、8}になります。複数のトリプレットが存在する場合は、それらすべてが表示されます。 アルゴリズム getTriplets(arr、n、sum)- トリプレットを格納するための1つの配列の定義を開始します。たとえば、trip_arrは、一意のトリプレットを格納するため
-
C++で指定された辺を持つ三角形の外接円の面積
ここでは、辺が指定されている三角形の外接円の面積を取得する方法を説明します。ここで、辺ABはa、BCはb、CAはc、半径は「r」です。 半径rは-と同じです 例 #include <iostream> #include <cmath> using namespace std; float area(float a, float b, float c) { if (a < 0 || b < 0 || c < 0) //if values are is negative it is invalid &n
-
C++で楕円に内接できる最大の正方形の面積
ここでは、楕円に内接できる最大の正方形の領域が表示されます。楕円の四角は以下のようになります- 楕円の面積は-です ここで、xとyが同じ場合、 つまり、面積は- 例 #include <iostream> #include <cmath> using namespace std; float area(float a, float b) { if (a < 0 || b < 0 ) //if values are is negative it is invalid  
-
C++で六角形に内接する最大の三角形の面積
ここでは、正六角形に内接する最大の三角形の領域が表示されます。六角形の各辺は「a」であり、三角形の各辺は「b」です。 この図から、六角形の1つの辺を使用して1つの三角形を作成すると、これらの2つの三角形が各辺を2つの部分に分割していることがわかります。 2つの直角三角形も見ることができます。ピタゴラスの公式から、次のように言うことができます- したがって、面積は- 例 #include <iostream> #include <cmath> using namespace std; float area(float a) { &nbs
-
C++STLの配列アルゴリズム
C ++ 11以降、STLにはさまざまな関数が追加されています。これらの関数は、アルゴリズムヘッダーファイルにあります。ここでは、これのいくつかの機能を見ていきます。 all_of()関数は、コンテナのすべての要素に当てはまる1つの条件をチェックするために使用されます。アイデアを得るためのコードを見てみましょう 例 #include <iostream> #include <algorithm> using namespace std; main() { int arr[] = {2, 4, 6, 8, 10}; &nb
-
C++の両側に同じ数の偶数または奇数の配列インデックス
ここでは、1つの配列が与えられたと仮定して、1つの問題が発生します。 n個の要素があります。左側の偶数の頻度と右側の偶数の頻度が同じであるか、左側の奇数の頻度が右側の奇数の頻度と同じである1つのインデックスを見つける必要があります。そのような結果がない場合は、-1を返します。 配列が{4、3、2、1、2、4}のようであると仮定します。出力は2です。インデックス2の要素は2で、左側に奇数が1つだけあり、右側に奇数が1つだけあります。 この問題を解決するために、左右の情報を格納するためのペアの2つのベクトルを作成します。左側のベクトルは左側の奇数と偶数の頻度を格納し、右側のベクトルは右側でも同
-
C ++で重みの観点から最も長いパスが最小化されるように、エッジに重みを割り当てます。
ここで1つの問題が発生します。この問題では、ツリーの1つのエッジと合計Sが与えられます。タスクは、重みの観点から最長のパスが最小化されるように、他のすべての重みに重みを割り当てることです。割り当てられた重みの合計は「S」と同じです。 アプローチは簡単です。パスに最大2つのリーフノードを含めることができるツリーのプロパティ。それは解決策を得るために使用されます。したがって、リーフノードを接続しているエッジのみに重みを割り当て、他のエッジを0に割り当てると、リーフノードに接続しているすべてのエッジがとして割り当てられます。 パスには最大2つのリーフノードを含めることができるため、最長のパ
-
C++での親ポインタを使用した二分探索木挿入
新しいノードを再帰的にBSTに挿入できます。その場合、各サブツリーのルートのアドレスを返します。ここでは、親ポインタを維持する必要がある別のアプローチを見ていきます。親ポインタは、ノードなどの祖先を見つけるのに役立ちます。 アイデアは、左と右のサブツリーのアドレスを格納することです。再帰呼び出しの後に、返されたポインターの親ポインターを設定します。これにより、挿入中にすべての親ポインタが設定されていることが確認されます。ルートの親はnullに設定されています。 アルゴリズム insert(node、key)- begin if node is null, then
-
これをC++で削除しますか?
Deleteは、Variableのストレージスペースの割り当てを解除するために使用される演算子です。 このポインタは、非静的メンバー関数内でのみアクセスできる一種のポインタであり、メンバー関数を呼び出したオブジェクトのアドレスを指します。 このポインタは現在のオブジェクトのアドレスを保持します。簡単に言えば、このポインタはクラスの現在のオブジェクトを指していると言えます オブジェクトを介してメンバー関数を呼び出すときは常に、コンパイラはそのオブジェクトを呼び出すアドレスを、このポインタとしてメンバー関数の最初のパラメータとして密かに渡します。 通常、このポインタには削除演算子を使用しな