-
C ++で配列のすべての個別のサブセット(またはサブシーケンス)の合計を検索します
整数のセットがあるとします。与えられたセットのサブセットから形成できる明確な合計を見つけて、昇順で印刷します。配列要素の合計は小さいです。配列要素が[1、2、3]のようなものだと考えてください。出力は0、1、2、3、4、5、6になります。個別のサブセットは{}、{1}、{2}、{3}、{1、2}、{2、3}、{1です。 、3}、{1、2、3}、合計値は0、1、2、3、3、5、4、6です。 これを解決するために、動的計画法のアプローチを使用します。指定された要素の合計が小さい場合、配列のサイズを含む行を含むDPテーブルを作成できます。列のサイズは、指定された配列内のすべての要素の合計になります
-
C++を使用してバイナリツリーの上面図にノードを印刷するプログラム
このチュートリアルでは、特定の二分木の上面図に表示されるすべてのノードを印刷するプログラムについて説明します。 特定の二分木では、ノードが水平距離の最初のノードである場合、そのノードが上面図に表示されます。ノードxの左側のノードの水平距離はx-1であり、ノードxの右側のノードの水平距離はx+1です。 これを解決するために、レベル順序トラバーサルを実行して、特定のレベルに存在する他のノードの前に、特定のレベルの最上位ノードを取得します。さらに、ハッシュを使用して、選択したノードが上面図に表示されているかどうかを確認します。 例 #include <iostream> #inclu
-
C++で特定のセットのすべての個別のサブセットを検索します
ここでは、特定のセットのすべての個別のサブセットを表示する方法を説明します。したがって、セットが{1、2、3}の場合、サブセットは{}、{1}、{2}、{3}、{1、2}、{2、3}、{1、3}になります。 、{1、2、3}。すべてのサブセットのセットは、べき集合と呼ばれます。べき集合には2n個の要素があります。 0から2n(を除く)をループし、各反復で、現在のカウンターのi番目のビットが設定されているかどうかを確認してから、i番目の要素を出力します。 例 #include<iostream> #include<cmath> using namespace std;
-
C ++を使用して、2つの連続する数が互いに素でなく、3つの連続する数ごとが互いに素になるように数を出力するようにプログラムします。
このチュートリアルでは、2つの連続する数が互いに素でなく、3つの連続する数ごとに互いに素になるように、数を出力するプログラムについて説明します。 ここでは、整数Nが与えられます。互いに素になることがないように、109未満のN個の整数を出力する必要がありますが、3つの連続する整数のペアは互いに素でなければなりません。 たとえば、整数4があるとします。すると、上記の両方の条件に従う数値は次のようになります。 6 15 35 14 例 #include <bits/stdc++.h> using namespace std; #define limit 1000000000 #def
-
C++を使用してルートからバイナリツリーの特定のノードへのパスを出力するプログラム
このチュートリアルでは、ルートから特定のノードへのパスをバイナリツリーで出力するプログラムについて説明します。 個別のノードを持つ特定の二分木については、二分木のルートノードから特定の特定のノードに到達するための完全なパスを出力する必要があります。 この問題を解決するために、再帰を使用します。二分木をトラバースしている間、検出される特定の要素を再帰的に検索します。また、検索する要素に到達するためのパスを保存します。 例 #include <bits/stdc++.h> using namespace std; struct Node{ int data
-
C++で平行四辺形のすべての可能な座標を検索します
与えられた3つの座標から可能なすべての座標を見つけて、ゼロ以外の領域の平行四辺形を作成します。 A、B、Cが3つの与えられたポイントであり、考えられる状況は3つだけであると仮定します。 AB、ACは側面、BCは対角線です AB、BCは側面、ACは対角線です BC、ACは側面、ABは対角線です したがって、3つの座標が与えられた場合、平行四辺形を生成できる3つの座標のみが可能であると言えます。反対側が等しいので、AD =BC、AB =CDであるため、次のように欠落点Dの座標を計算します- (Dx-Ax,Dy-Ay) = (Cx-Bx,Cy-By) Dx = Ax+Cx-Bx Dy =
-
C++を使用してルートから完全なバイナリツリーのすべてのノードへのパスを出力するプログラム
このチュートリアルでは、バイナリツリーのルートノードから特定のバイナリツリーに存在する他のすべてのノードへのパスを出力するプログラムについて説明します。 このプログラムでは、1からNまでの二分木に存在する要素の数を示す数Nが与えられます。 1はバイナリツリーのルートノードです。したがって、私たちのタスクは、ルートノードからバイナリツリーに存在する他のさまざまな要素へのすべての可能なパスを出力することです。 このプログラムを解決するために、与えられたノードIについて、その左の子は2 * iとして計算でき、その右の子は2 * i+1として計算できることがわかっています。次に、バックトラッキング
-
C++の辞書で特定のパターンに一致するすべての文字列を検索します
辞書と呼ばれる文字列のリストがあると考えてください。別のパターン文字列があります。私たちの仕事は、パターンに一致する文字列を見つけることです。辞書が[“ abb”、“ xyz”、“ aab”、“ kmm”]のようで、パターンが“ stt”であるとすると、結果は“ abb”、“ kmm”になります。パターンには最初に1つの文字があり、次に2つの同じ文字があるため、同じパターン文字列に従います。 この問題を解決するために、パターンに一致する辞書の単語がエンコード後のパターンと同じハッシュを持つように、パターンをエンコードします。辞書内のすべての単語を繰り返し処理し、ハッシュが同じ場所に表示します
-
C ++で指定された文字列内の「1(0+)1」のすべてのパターンを検索します
文字列に1(0+)1のようなパターンがあるとします。ここで、(0+)は、空でない連続した1の出現を示します。すべてのパターンを見つける必要があります。パターンは重複する可能性があります。文字列は必ずしもバイナリ文字列である必要はありません。数字と小文字のみを保持できます。文字列が1101001のようなものであるとすると、そのようなパターンが2つあります。 101と1001。 この問題を解決するために、次の手順に従います- 文字列内のすべての文字cを繰り返し処理します cが1の場合、要素が0になるまで繰り返します 0のストリームが終了すると、次の文字が1かどうかを確認します
-
C++で等比数列を形成するソートされた配列内のすべてのトリプレットを検索します
明確な正の整数を持つソートされた配列があるとします。積分共通比で等比数列を形成するすべてのトリプレットを見つける必要があります。配列要素が[1、2、6、10、18、54]、トリプレットが(2、6、18)、および(6、18、54)であるとすると、これらは等比数列を形成しています。 これを解決するために、2番目の要素から開始し、すべての要素を中間要素として固定し、小さい要素と大きい要素を検索します。中間要素arr[j]が等比数列の中間である場合、前の要素arr[i]とarr[k]は次のようになります $$ \ frac {arr [j]} {arr [i]} =\ frac {arr [k]}
-
C++STLを使用して特定の範囲の素数を印刷するプログラム
このチュートリアルでは、C++標準テンプレートライブラリを使用して特定の範囲の数値の素数を出力するプログラムについて説明します。 ここでは、aとbという2つの数字が与えられます。タスクは、この範囲内のすべての次の素数を出力することです。このために、Sieve of Eratosthenesメソッドをサブルーチンとして実行することにより、これを使用します。同時に、すべての素数をベクトルに格納し、最後にすべてを印刷します。 例 #include<bits/stdc++.h> using namespace std; typedef unsigned long long int unl
-
C++の配列内のすべての要素に最も近い大きい値を検索します
ここでは、配列内のすべての要素に最も近い大きい値を見つける方法を説明します。要素xに、それよりも大きい次の要素があり、配列にも存在する場合、それはその要素のより大きな値になります。要素が存在しない場合は、-1を返します。配列要素が[10、5、11、6、20、12]であるとすると、大きい方の要素は[11、6、12、10、-1、20]になります。 20は配列内でそれ以上の値を持たないため、-1を出力します。 これを解決するために、C++STLのセットを使用します。セットは、バイナリツリーアプローチを使用して実装されます。二分木では、常に順序の後続が次に大きい要素です。したがって、O(log n)
-
C++を使用して再帰を使用せずにルートからリーフへのパスを出力するプログラム
このチュートリアルでは、ルートノードから特定のバイナリツリー内のすべてのリーフノードへのパスを出力するプログラムについて説明します。 たとえば、次の二分木があるとしましょう この二分木には、4つのリーフノードがあります。したがって、ルートノードからリーフノードへのパスは4つになります。 これを解決するために、反復アプローチを使用します。二分木のプレオーダートラバーサルを実行している間、マップに親ポインタを格納できます。トラバーサル中にリーフノードに遭遇したときはいつでも、親ポインタを使用してルートノードからそのパスを簡単に出力できます。 例 #include <bits/st
-
C++を使用して最長の共通部分文字列を出力するプログラム
このチュートリアルでは、最長のcommonsubstringを出力するプログラムについて説明します。 このために、AとBという2つの文字列が与えられます。2つの入力文字列AとBに共通する最長のサブ文字列を出力する必要があります。 たとえば、「HelloWorld」と「worldbook」が与えられたとします。その場合、最も長い一般的なサブストリング(この場合)は「世界」になります。 例 #include <iostream> #include <stdlib.h> #include <string.h> using namespace std; vo
-
C++を使用してバイナリツリーの最初の最短ルートからリーフパスを出力するプログラム
このチュートリアルでは、バイナリツリーで最初の最短のルートからリーフへのパスを出力するプログラムについて説明します。 ここでは、異なる値を持つ二分木が与えられ、与えられた二分木でルートノードからリーフノードへの最短経路を見つける必要があります。 これを解決するために、キューを使用してバイナリツリーでレベル順トラバーサルを実行し、ノードを最短パスに格納できます。このため、最終レベルの左端のノードに到達すると、キューから値を取得し、最短パスを出力します。 例 #include <bits/stdc++.h> using namespace std; struct Node{ &nb
-
C++の配列内のすべての要素に最も近い値を検索します
ここでは、配列内のすべての要素に最も近い値を見つける方法を説明します。要素xに、それよりも大きい次の要素があり、配列にも存在する場合、それはその要素のより大きな値になります。要素が存在しない場合は、-1を返します。配列要素が[10、5、11、6、20、12]であるとすると、大きい方の要素は[11、6、12、10、-1、20]になります。 20は配列内でそれ以上の値を持たないため、-1を出力します。 これを解決するために、C++STLのセットを使用します。セットは、バイナリツリーアプローチを使用して実装されます。二分木では、常に順序の後続が次に大きい要素です。したがって、O(log n)時間で
-
C++を使用してDFSトラバーサルを段階的に印刷するプログラム
このチュートリアルでは、特定の二分木で深さ優先探索を使用してトラバーサルのステップを印刷するプログラムについて説明します。 これには、バックトラッキング手順も含め、深さ優先探索で発生するすべてのステップが含まれます。 DFS中に、各ノードをトラバースし、同時に親ノードと使用されるエッジを格納します。トラバーサル中に隣接するエッジにアクセスした場合は、深さ優先探索のステップとして正確なノードを印刷できます。 例 #include <bits/stdc++.h> using namespace std; const int N = 1000; vector<int> a
-
C++で数値を除算する数値の桁数を検索します
番号が与えられていると仮定します。数を均等に分割する数の桁数を数える必要があります。数値が1012で、結果が3であるとします。1012を均等に分割する3桁の1、1、および2があります。 これを解決するために、モジュラス演算を使用して数値の各桁を見つけ、数値がその桁で割り切れるかどうかを確認します。割り切れる場合は、カウンターを増やします。数字が0の場合は、その数字を無視します。 例 #include<iostream> using namespace std; int countDivDigit(int num) { int c
-
C++で数値の立方根を見つける
ここでは、数値の立方根を取得する方法を説明します。数値が27とすると、この数値の立方根は3になります。この問題を解決するために、ライブラリ関数を使用せずに独自のロジックを定義します。二分探索アプローチを使用します。この問題を解決するには、次の手順に従う必要があります。 threshold =0.000001のようなしきい値があるとします。 左の値を0として開始し、右の値を数値として開始します 中央を計算する:=(左+右)/ 2 (number – mid3)の絶対値がしきい値よりも小さい場合は、回答としてmidを返します mid3が数値より大きい場合は、右に設定しま
-
C++を使用してバイナリツリーで最長の葉から葉へのパスを印刷するプログラム
このチュートリアルでは、特定の二分木でリーフノードから別のリーフノードに存在する最長のパスを出力するプログラムについて説明します。 つまり、二分木の直径に現れるすべてのノードを印刷する必要があります。ここで、特定の二分木の直径(または幅)は、あるエンドノードから別のエンドノードへの最長パスにあるノードの数として定義されます。 これを解決するために、高さ関数を使用して二分木の直径を計算します。次に、バイナリツリーの左側と右側の部分で最長のパスを見つけます。次に、最後に直径のノードを印刷するために、左側のノード、ルートノード、右側のノードの順に印刷します。 例 #include <bit