-
C++の二分木の2つのリーフ間の最小合計パス
問題の説明 各ノード要素に数値が含まれている二分木があるとします。タスクは、あるリーフノードから別のリーフノードへの可能な最小の合計を見つけることです。 例 上記のツリーでは、最小サブパスは次のように-6です:(-4)+ 3 + 2 +(-8)+ 1 アルゴリズム アイデアは、再帰呼び出しで2つの値を維持することです- 現在のノードの下にルート化されたサブツリーのルートからリーフへの最小パスの合計 葉の間の最小経路合計 訪問したノードXごとに、Xの左右のサブツリーでルートからリーフへの最小の合計を見つける必要があります。次に、2つの値をXのデータと加算し、その合計を現在の最小パ
-
C++の三角形の最小合計パス
問題の説明 数字の三角形の構造が与えられた場合、上から下への最小経路合計を見つけます。各ステップで、下の行の隣接する番号に移動できます。 例 入力が-の場合 5 7 3 8 1 2 9 6 4 5 その場合、最小合計は次のように13です- 5 + 3 + 1 + 4 アルゴリズム 動的計画法の暗記手法を使用する 暗記、つまり暗記用の1次元配列を作成します K行ごとに、以下の式を使用します- memorization[i] = min( memorization[i], memorization[i+1]) + A[k][i];
-
C++でk以下のすべての要素をまとめるために必要な最小スワップ
問題の説明 n個の正の整数と数kの配列が与えられます。 k以下のすべての数をまとめるのに必要なスワップの最小数を見つけます。 例 入力配列が=1、5、4、7、2、10}でk =6の場合、1つのスワップが必要です。つまり、要素7を2とスワップします。 アルゴリズム 「k」以下のすべての要素をカウントします。カウントが「cnt」であるとしましょう 長さ「cnt」のウィンドウに2つのポインター手法を使用して、この範囲内の「k」より大きい要素の数を毎回追跡します。合計数が「outOfRange」であるとしましょう。 長さが「cnt」のウィンドウごとに手順2を繰り返し、その中の「outOfRang
-
C++ですべての1をグループ化するために必要な最小スワップ
問題の説明 0と1の配列が与えられます。タスクは、アレイに存在するすべての1をグループ化するために必要なスワップの最小数を見つけることです。 例 入力配列={1、0、1、1、0、1}の場合、1つのスワップが必要です。つまり、最初の0を最後の1と交換します。 アルゴリズム 配列内の1の総数を数えます countがxの場合、最大数が1のこの配列の長さxのサブ配列を見つける必要があります 必要な最小スワップは、長さxのサブアレイ内の0の数であり、最大数は1です 例 #include <bits/stdc++.h> using namespace std; int getMinS
-
C++でバイナリ文字列を交互にするために必要な最小スワップ
問題の説明 偶数の長さと同じ数の0と1のバイナリ文字列が与えられます。文字列を交互にするためのスワップの最小数はいくつですか? 2つの連続する要素が等しくない場合、バイナリ文字列は交互になります 例 str =11110000の場合、2つのスワップが必要です。 アルゴリズム 文字列の奇数位置と偶数位置のゼロの数を数えます。それらのカウントをそれぞれoddZeroCntとevenZeroCntとします 文字列の奇数位置と偶数位置にあるものの数を数えます。それらのカウントをそれぞれoddOneCntとevenOneCntとします 常に1を0でスワップします。したがって、交互の文字列が0で始ま
-
C ++で最初に0、次に1になるように、バイナリ配列を分割するための最小トグル
問題の説明 0と1のみを含むn個の整数の配列が与えられた場合、配列がパーティション化される、つまり最初に0、次に1になるように、必要な最小のトグル(0から1に、またはその逆に切り替える)を見つけます。 例 arr [] ={1、0、0、1、1、1、0}の場合、2つのトグルが必要です。つまり、最初の1つと最後のゼロをトグルします。 アルゴリズム 質問を観察すると、0からn-1までのポイントが確実に存在し、そのポイントまでのすべての要素にすべて0が含まれ、右からポイントにすべて1が含まれる必要があることがわかります。 この法律に従わないインデックスは削除する必要があります。アイデアは、すべて
-
C++の配列のすべてのサブセットの要素のAND間の最小値
問題の説明 整数の配列が与えられた場合、タスクは、配列の各サブセットのすべての要素のANDを見つけて、それらすべての中で最小のAND値を出力することです。 例 If arr[] = {1, 2, 3, 4, 5} then (1 & 2) = 0 (1 & 3) = 1 (1 & 4) = 0 (1 & 5) = 1 (2 & 3) = 2 (2 & 4) = 0 (2 & 5) = 0 (3 & 4) = 0 (3 & 5) = 1 (4 & 5) = 4 アルゴリズム 配列のサブセットの最小AND値は、配列
-
C++のサブ配列の「max+min」の最小値
問題の説明 n個の正の要素の配列が与えられた場合、サブ配列のサイズが2以上でなければならないことを前提として、サブ配列内の最大要素と最小要素の可能な最小の合計を見つける必要があります。 例 arr [] ={10、5、15、7、2、1、3}の場合、「2 + 1」を加算すると、「最大+最小」の合計は3になります。 アルゴリズム サブアレイに要素を追加しても、最大値と最小値の合計は増えません。 配列に要素を追加しても、配列の最大値が減少することはありません。より大きな要素を追加した場合にのみ増加します。したがって、長さが2のサブアレイのみを考慮することが常に最適です。 したがって、長さ2のす
-
C ++で1つの数値を除算し、他の数値で割り切れる最小値
問題の説明 2つの整数pとqが与えられた場合、タスクは、q%x =0およびx%p =0となる最小の可能な数xを見つけることです。条件がどの数にも当てはまらない場合は、-1を出力します。 例 If p = 3 and q = 66 then answer is 3 as: 66 % 3 = 0 3 % 3 = 0 アルゴリズム 数値xが指定された条件を満たす場合、xはpの倍数であり、qはxの倍数であるため、qがpで除算されることは明らかです。つまり、q%p=0です。 したがって、xの可能な最小値はpとqのGCDであり、qがpで割り切れない場合、指定された条件を満たす数値はありません。 例
-
C++での最小XOR値ペア
問題の説明 整数の配列が与えられます。最小のXOR値を持つ配列でペアを見つけます 例 If arr[] = {10, 20, 30, 40} then minimum value pair will be 20 and 30 as (20 ^ 30) = 10. (10 ^ 20) = 30 (10 ^ 30) = 20 (10 ^ 40) = 34 (20 ^ 30) = 10 (20 ^ 40) = 60 (30 ^ 40) = 54 アルゴリズム 指定された配列のすべてのペアを生成し、それらの値のXORを計算します 最小XOR値を返します 例 #include <bits/s
-
C++でのn-aryツリーのミラー
問題の説明 すべてのノードに可変数の子が含まれているツリーがある場合、ツリーをそのミラーに変換します 例 n-aryツリーが-の場合 次に、ミラーは- 例 #include <bits/stdc++.h> using namespace std; struct node { int data; vector<node *>child; }; node *newNode(int x) { node *temp = new node; temp->
-
C++で指定された配列から偶数要素と奇数要素が欠落しています
問題の説明 2つの整数配列even[]とodd[]が与えられ、それぞれ連続した偶数要素と奇数要素が含まれ、各配列から1つの要素が欠落しています。タスクは、不足している要素を見つけることです。 例 If even[] = {10, 8, 6, 16, 12} and odd[] = {3, 9, 13, 7, 11} then missing number from even array is 14 and from odd array is 5. アルゴリズム even[]配列の最小および最大の偶数要素を変数minEvenおよびmaxEvenに格納します 最初のN個の偶数の合計はN*(N
-
C++のリストにない順列
問題の説明 任意の単語の順列のリストが与えられます。順列のリストから欠落している順列を見つけます。 例 If permutation is = { “ABC”, “ACB”, “BAC”, “BCA”} then missing permutations are {“CBA” and “CAB”} アルゴリズム 指定されたすべての文字列のセットを作成します そしてすべての順列のもう1つのセット 2つのセット間の差を返す 例 #include &l
-
C++でのサイズKのM個の重複しないサブ配列の最大合計
問題の説明 配列と2つの数値MおよびKが与えられます。配列内で、サイズK(重複しない)の最大M個のサブ配列の合計を見つける必要があります。 (配列の順序は変更されません)。 Kはサブアレイのサイズ、Mはサブアレイの数です。配列のサイズはm*kより大きいと想定できます。配列の合計サイズがkの倍数でない場合は、最後の配列の一部を取得できます。 例 指定された配列が={2、10、7、18、5、33、0}の場合。 N =7、M =3、K =1の場合、サブセットは-であるため、出力は61になります。 {33, 18, 10} アルゴリズム presum配列を作成します。これには、指定された配列の
-
C++でのメビウス関数のプログラム
与えられた数n;タスクは、数nのメビウス関数を見つけることです。 メビウス関数とは何ですか? メビウス関数は、によって定義される数論関数です。 $$ \ mu(n)\ equiv \ begin {cases} 0 \\ 1 \\(-1)^ {k} \ end {cases} $$ n =0nに1つまたは複数の繰り返し因子がある場合 n =1 n=1の場合 n =(-1)knがk個の異なる素数の積である場合 例 Input: N = 17 Output: -1 Explanation: Prime factors: 17, k = 1, (-1)^k 🠠(-1)^1 = -1
-
多項式の導関数のためのC++プログラム
多項式項を含む文字列が与えられた場合、タスクはその多項式の導関数を評価することです。 多項式とは何ですか? 多項式は2つの単語から来ています:-「ポリ」は「多く」を意味し、「ノミアル」は「用語」を意味し、多くの用語で構成されます。多項式は、変数、係数、および指数を含む式であり、変数の加算、乗算、減算などの演算のみが含まれます。 多項式の例 x2 + x + 1 多項式の導関数 p(x)=mx^nは-になります m * n * x ^(n-1) 例 Input: str = "2x^3 +1x^1 + 3x^2" val = 2 O
-
最適なページ置換アルゴリズムのためのC++プログラム
与えられたページ番号とページサイズ。タスクは、最適なページ置換アルゴリズムを使用してメモリブロックをページに割り当てるときのように、ヒットとミスの数を見つけることです。 最適なページ置換アルゴリズムとは何ですか? 最適なページ置換アルゴリズムは、ページ置換アルゴリズムです。ページ置換アルゴリズムは、どのメモリページを置換するかを決定するアルゴリズムです。最適なページ置換では、実際には実装できませんが、近い将来に参照されないページを置換しますが、これは最適であり、ミスが最小限であり、最適です。 例を使って図式的に説明して理解しましょう。 ここで、1、2、3を割り当てた後、メモリが
-
メモリ管理における最適なアルゴリズムのためのC++プログラム
ブロックサイズとプロセスサイズを含む2つの配列があるとします。タスクは、メモリ管理のベストフィットアルゴリズムに従って結果を印刷することです。 最適なアルゴリズムとは何ですか? Best Fitは、メモリ管理アルゴリズムです。要求プロセスの要件を満たす最小の空きパーティションの割り当てを処理します。このアルゴリズムでは、メモリブロック全体を探し、プロセスに最も小さく最も適切なブロックをチェックしてから、適切なプロセスを実行するために使用できるすぐ近くのブロックを探します。 したがって、ブロックサイズとプロセスサイズを取得し、プロセスの出力と、プロセスに割り当てられるブロックを返します。
-
優先スケジューリングのためのC++プログラム
n個のプロセス、つまりP1、P2、P3、.......、Pnと、各プロセスに関連付けられた対応するバースト時間と優先度が与えられます。タスクは、優先CPUスケジューリングアルゴリズムを使用して、平均待機時間、平均ターンアラウンドタイム、およびプロセス実行のシーケンスを見つけることです。 待機時間と所要時間とは何ですか? 所要時間 プロセスの送信から完了までの時間間隔です。 所要時間=プロセスの完了–プロセスの提出 待機時間 ターンアラウンドタイムとバーストタイムの差です 待機時間=所要時間–バースト時間 優先スケジューリングとは何ですか? 優先度スケジューリングでは、すべての
-
二分法のためのC++プログラム
0であり、関数f(x)はaとbの間にある必要があります。つまりf(x)=[a、b ]。タスクは、二分法を使用して、関数f(x)の区間aとbの間にあるルートの値を見つけることです。 二分法とは何ですか? 二分法は、「a」と「b」で定義された指定された制限内の関数f(x)の根の値を見つけるために使用されます。関数の根は、f(a)=0となるような値aとして定義できます。 例 Quadratic equation F(x) = - 8 This equation is equals to 0 when the value of x will be 2 i.e. - 8 =