-
C++での最適なアカウントバランシング
友人のグループが休暇に出かけ、時にはお互いにお金を貸したとします。例として、アミットはビクラムの昼食代を10ドルで支払いました。その後、チャンダンはアミットにタクシー料金として5ドルを与えました。各トランザクションがタプル(x、y、z)として扱われるモデルを設計する必要があります。これは、人xが人yに$zを与えたことを意味します。 Amit、Bikram、およびChandanがそれぞれ人物0、1、および2であるとすると、トランザクションは[[0、1、10]、[2、0、5]]として表すことができます。人々のグループ間の取引のリストがある場合、債務を決済するために必要な取引の最小数を見つける必要
-
C++で繰り返しを数える
空でない2つの文字列s1とs2(最大100文字)があり、2つの数値n1とn2が両方とも0〜106の範囲にあるとします。ここで、文字列S1とS2を想定します。ここで、S1 =[s1、n1]とS2 =[ s2、n2]。 S =[s、n]は、n個の接続された文字列sで構成される文字列Sを定義します。例として、[ab、4]=abababab。 一方、文字列s2から一部の文字を削除してs1になると、文字列s2から文字列s1を取得できることも定義します。したがって、「abc」は定義に基づいて「abdbec」から取得できますが、「acbbe」からは取得できません。 [S2、M]がS1から取得できるよう
-
C++で最短の長さの文字列をエンコードする
空でない文字列があるとします。エンコードされた長さが最小になるように、この文字列をエンコードする必要があります。 エンコード規則は− k [encoded_string]のようなもので、[]内のencoded_stringは正確にk回繰り返されます。 kは正の整数になり、エンコードされた文字列は空になったり、余分なスペースができたりしないことに注意する必要があります。入力文字列には小文字のみが含まれていると想定できます。エンコードプロセスで文字列が短くならない場合は、その文字列をエンコードしないでください。 したがって、入力が「aaaaa」のような場合、「5[a]」は「aaaaa」より1文
-
C++プログラムのすべての単語を連結した部分文字列
文字列sがあり、単語のリストもあるとします。配列に存在する単語はすべて同じ長さです。 s内の部分文字列のすべての開始インデックスを見つける必要があります。これは、単語内の各単語を1回だけ連結したものであり、文字が介在することはありません。 したがって、入力が「barfoothefoobarman」のようで、単語が[foo、 bar]の場合、出力は[0,9]になります。これは、インデックス0と9で始まる部分文字列が「barfoo」と「foobar」であるためです。 これを解決するには、次の手順に従います- ok()というメソッドを定義します。これには、文字列s、マップwordCnt、お
-
C++のMazeIII
空のスペースと壁のある迷路があり、その迷路の中にボールもあるとします。ボールは、上(u)、下(d)、左(l)、または右(r)の方向に転がることで空きスペースを通過できますが、壁にぶつかるまで転がり続けます。ボールが止まると、次の方向を選ぶことができます。その迷路にも1つの穴があります。ボールが穴に転がると、ボールは穴に落ちます。 したがって、ボールの位置、穴の位置、迷路がある場合、最短距離を移動することでボールがどのように穴に落ちるかを調べる必要があります。ここで、距離は、ボールがスタート(除外)からホール(含まれる)まで移動した空きスペースの数によって定義されます。 「u」、「d」、「l
-
C++プログラムでN×3グリッドをペイントする方法の数
サイズがnx3のグリッドがあり、グリッドのすべてのセルを3色のうちの1つだけでペイントするとします。ここで使用される色は、赤、黄、緑です。 ここで、2つの隣接するセルが同じ色を持たないという制約があります。グリッドの行数はn個です。最後に、このグリッドをペイントする方法の数を見つける必要があります。答えは非常に大きい可能性があるため、10 ^ 9+7を法として返します。 したがって、入力が1のような場合、出力は12になります これを解決するには、次の手順に従います- m =10 ^ 9 + 7 関数add()を定義します。これには、a、b、が必要です。 retu
-
C++で正確にK個の最大の比較を見つけることができる配列を構築する
3つの整数n、m、およびkがあるとします。正の整数の配列の最大要素を見つけるために次のアルゴリズムがある場合- max_val := -1 max_ind := -1 search_cost := 0 n := size of arr for initialize i := 0, when i < n, update (increase i by 1), do: if max_val < arr[i], then: max_val := arr[i] max_ind :=
-
隣接するレベルを持つツリーからの最大合計はC++では許可されていません
この問題では、正の数で構成される二分木が与えられます。私たちのタスクは、C++では許可されていない隣接するレベルを持つツリーから最大合計を見つけるプログラムを作成することです。 コードの説明 ここでは、ツリーの2つの隣接するレベルのノードが合計に含まれないように、ツリーのノードの最大合計を求めます。 問題を理解するために例を見てみましょう 出力 21 説明 ルートを開始レベルとして、合計=5 + 3 + 8 + 1 =17ルートのサブ子を開始レベルとして、合計=2 + 6 + 9 + 4 =21 ソリューションアプローチ maxSumを見つけるための条件のひとつは、隣接する要素がな
-
C ++では、同じ要素から連続して要素を選択できないように、3つの配列からの最大合計
この問題では、すべてサイズNの3つの配列arr1 []、arr2 []、およびarr3 []が与えられます。私たちのタスクは、3つの配列から最大合計を見つけて、同じ要素から連続して要素を選択しないようにするプログラムを作成することです。 C++で許可されています。 問題の説明 N個の要素を選択することで最大の合計を求めます。 i =番目の要素は、配列のi番目の要素からの合計から選択できます。つまり、i番目の合計はarr1 [i] / arr2 [i] /arr3[i]からのものです。また、同じ配列から選択できる2つの連続した要素を選択することはできないことに注意してください。 問題を理解す
-
C++で2つの要素が隣接しないような2xnグリッドの最大合計
この問題では、サイズ2xnの長方形グリッドが与えられます。私たちのタスクは、C++で2つの要素が隣接しないように2xnグリッドで最大合計を見つけるプログラムを作成することです。 問題の説明 最大の合計を見つけるために、現在の要素に隣接する要素を垂直、水平、または斜めに選択することはできません。 問題を理解するために例を見てみましょう 入力 rectGrid[2][] =389 411 出力 13 説明 可能なすべての合計は rectGrid [0] [0]、つまり3から開始する場合、追加できるのは9または1のみです。maxSumは12です。 rectGrid [1] [0]、つまり
-
C++で2つの要素が隣接しないような循環配列の最大合計
この問題では、循環配列cirArr[]が与えられます。私たちのタスクは、C++で2つの要素が隣接しないように循環配列の最大合計を見つけるプログラムを作成することです。 問題の説明 循環配列の場合、隣接する要素を取得できないように、配列の要素の最大合計を見つける必要があります。つまり、代替要素を取得する必要があります。 循環アレイ は、配列の最後の要素が最初の要素に接続されている特殊なタイプの配列です。 問題を理解するために例を見てみましょう 入力 cirArr[] = {4, 1, 5, 3, 2} 出力 9 説明 最大合計循環サブシーケンスは[4、5、2]です。合計=9 ソリ
-
最大合計増加部分列| C++のDP-14
このチュートリアルでは、最大の合計増加部分列を見つけるプログラムについて説明します。 このために、N個の整数を含む配列が提供されます。私たちのタスクは、要素がソートされた順序になるように、最大合計に追加する配列から要素を取得することです 例 #include <bits/stdc++.h> using namespace std; //returning the maximum sum int maxSumIS(int arr[], int n) { int i, j, max = 0; int msis[n];  
-
C ++では、プレフィックスとプレフィックス後の特定の要素からのサブシーケンスの最大合計が増加する必要があります
この問題では、N個の整数と2つのインデックス値xおよびyの配列arr[]が与えられます。私たちのタスクは、プレフィックスから最大合計増加部分列を見つけるプログラムを作成することであり、プレフィックスがC++で必須である後の特定の要素です。 問題の説明 インデックスxまでシーケンスを増やし、インデックスyの要素を含めることの最大合計を求めます。 問題を理解するために例を見てみましょう 入力 arr[] = {1, 5, 9, 131, 6, 100, 11, 215}, x = 4, y = 6 出力 26 説明 インデックス3までサブシーケンスを取得し、最後にarr [6]=11を含め
-
C++でバイナリインデックスツリーを使用した最大合計増加部分列
この問題では、N個の要素の配列arr[]が与えられます。私たちのタスクは、C++のバイナリインデックスツリーを使用して最大の合計増加部分列を見つけるプログラムを作成することです。 問題を理解するために例を見てみましょう 入力 arr[] = {4, 1, 9, 2, 3, 7} 出力 13 説明 最大増加部分列は1、2、3、7です。合計=13 ソリューションアプローチ この問題を解決するために、値を挿入してバイナリインデックスツリーにマップするバイナリインデックスツリーを使用します。次に、最大値を見つけます。 例 ソリューションの動作を説明するプログラム #include <
-
C++の順列の絶対差の最大合計
この問題では、配列が与えられます。私たちのタスクは、C++の順列の絶対差の最大合計を見つけるプログラムを作成することです。 問題の説明 与えられた配列の要素のすべての順列を見つけます。次に、配列の隣接する要素の絶対差の合計を求めます。最後に、すべての合計の最大値を返します。 問題を理解するために例を見てみましょう 入力 arr[] = {9, 1, 6, 3} 出力 17 説明 All permutations of the array with sum of absolute difference of adjacent elements. {9, 1, 6, 3}, sum= |9-
-
C++の隣接する要素の差の最大合計
この問題では、数値Nが与えられます。私たちのタスクは、C++で隣接する要素の差の最大合計を見つけるプログラムを作成することです。 問題の説明 すべての順列配列の隣接する要素間の絶対差の最大合計を見つけます。 問題を理解するために例を見てみましょう 入力 N = 4 出力 7 説明 All permutations of size 4 are : {1, 2, 3, 4} = 1 + 1 + 1 = 3 {1, 2, 4, 3} = 1 + 2 + 1 = 4 {1, 3, 2, 4} = 2 + 1 + 2 = 5 {1, 3, 4, 2} = 2 + 1 + 2 = 5 {1, 4,
-
これらの数値のLCMがC++でNになるような個別の数値の最大合計
この問題では、私たちは数Nです。私たちのタスクは、これらの数のLCMがC ++でNになるように、個別の数の最大合計を見つけるプログラムを作成することです。 問題の説明 数Nのすべての因子の合計を見つける必要があります。そして、最大の合計を見つけるためにすべてを加算します。 問題を理解するために例を見てみましょう 入力 N = 12 出力 28 説明 All distinct factors of N are 1, 2, 3, 4, 6, 12. Sum = 1 + 2 + 3 + 4 + 6 + 12 = 28 ソリューションアプローチ 簡単な解決策は、数値のすべての要素を見つけてから
-
C++でLCMをNとして使用した個別の数値の最大合計
この問題では、数値Nが与えられます。私たちのタスクは、C++でLCMをNとして使用して個別の数値の最大合計を見つけるプログラムを作成することです。 問題の説明 ここでは、最小公倍数(LCM)としてNを持つ最大数の合計を見つける必要があります。 問題を理解するために例を見てみましょう 入力 N = 10 出力 18 説明 Maximum sum with LCM 10 is 1 + 2 + 5 + 10 = 18 ソリューションアプローチ この問題の簡単な解決策は、数値NをLCMとして使用する場合、Nのすべての異なる除数を取得し、それらを合計してmaxSumを取得する必要があるという考え
-
C++の行列の各行の要素の最大合計
この問題では、2つの行列mat[][]が与えられます。私たちのタスクは、C++のマトリックスの各行から要素の最大合計を見つけるプログラムを作成することです。 問題の説明 ここでは、現在の行の要素が合計と見なされる最後の行の要素よりも大きくなるように、行列の各行から1つの要素を取得することにより、最大の合計を求めます。上記の条件に従う要素の最大合計を見つけ、それが不可能な場合は-1を出力します。 問題を理解するために例を見てみましょう 入力 mat[][] = {{4, 6, 1}, {2, 5, 7}, {9, 1, 2}} 出力 22 説明 1st row = 6 2nd row =
-
C++での二分木の簡潔なエンコーディング
二分木があるとします。私たちが知っているように、バイナリツリーの簡潔なエンコーディングは可能な限り低いスペースに近いパフォーマンスを発揮します。 n番目のカタラン数は、n個の異なるノードを持つ構造的に異なる二分木の数によって指定されます。 nが大きい場合、これは約4nです。したがって、それをエンコードするには、log2(4)n=2nビット程度の最小値が必要です。したがって、簡潔な二分木は2n + O(n)ビットを消費します。 したがって、入力が次のような場合 その場合、出力は次のようになります エンコードされた- 構造リスト111 0 0 1 0 0 1 0 1 0 0 デー