-
xがC++でyを分割するように、指定された範囲で別個のペア(x、y)を見つけます
ここで、興味深い問題が1つあります。ここで、ペア(x、y)が見つかります。ここで、xとyは範囲内にあるため、l <=x、y <=rであり、ペアには1つのプロパティがあり、xの値はyを除算します。 。利用可能なペアが複数ある場合は、1つだけを選択してください。 下限lと2lの値を取得すれば、O(1)時間でこの問題を解決できます。 y / xの最小値は2である可能性があり、範囲内にさらに大きな値が存在する場合は、2が範囲内になります。また、xを増やすと、2xも増えるため、lと2lは、指定された範囲に入る最小のペアになります。 例 #include<iostream> using na
-
C ++の特定の配列で固定小数点(インデックスに等しい値)を検索します
ここでは、特定の配列で固定小数点を見つける方法を説明します。配列では、値がそのインデックスと同じである場合、1つの要素は固定小数点として示されます。このプログラムは、存在する場合は値を返し、そうでない場合は-1を返します。配列は負の数も保持できます。そして、データ要素が並べ替えられます。 ここでは、二分探索アプローチを使用して、O(log n)時間でこの問題を解決します。最初に、中間要素が固定小数点であるかどうかを確認し、はいの場合はそれを返します。そうでない場合は、中間要素のインデックスがインデックスの値よりも大きい場合、インデックスが大きい場合の2つの状況があります。 、次に、右側で固定
-
C++で許可されている重複を含む配列内の固定小数点を検索します
ここでは、特定の配列で固定小数点を見つける方法を説明します。配列では、値がそのインデックスと同じである場合、1つの要素は固定小数点として示されます。このプログラムは、存在する場合は値を返し、そうでない場合は-1を返します。配列は負の数も保持できます。そして、データ要素がソートされます。ここでは、重複する要素を配列に含めることができます。 ここでは、二分探索アプローチを使用して、O(log n)時間でこの問題を解決します。ただし、いくつかの変更が必要です。通常の二分探索を使用すると、重複する要素に対して失敗する可能性があります。左をチェックするには、min(mid – 1、midValue)か
-
xとその桁の合計がC++で指定されたnと等しくなるような数xを見つけます
ここで、1つの問題が発生します。ここで、数値nを取得する場合、x +桁の合計xが指定された数値nと同じになるように、xなどの別の値を見つける必要があります。 nの値が21であると仮定します。このプログラムは、15+桁の合計15、つまり15 + 1 + 5 =21=nとして数値x=15を返します。 この問題を解決するには、単純なアプローチに従う必要があります。 1からnまで繰り返し、各繰り返しで、数値とその桁の合計の合計が数値と同じであるかどうかを確認し、停止します。それ以外の場合は続行します。 例 #include<iostream> using namespace std; i
-
C++で2つの配列の合計を同じにする要素スワッピングのペアを見つけます
要素数が異なる2つの配列があるとします。要素のペア(x、y)を見つける必要があります。ここで、xは最初の配列に存在し、yは2番目の配列に存在します。ペアは、これら2つの配列間で要素を交換した後、これら2つの配列の合計が同じになるように選択されます。 最初の配列Aが[4、1、2、2、1、1]を保持し、Bが[3、3、6、3]を保持しているとすると、Aの合計は11、Bの合計は15になります。 (1、3)のようなペアで、これら2つの配列間でこれらの値を交換すると、合計は次のようになります。[4、3、2、2、1、1] =13、[1、3、6、3] =13、それらは同じです。 これを解決するために、
-
C++の整数の配列で最大の積を持つペアを見つけます
配列Aがあるとすると、n個の異なる要素があります。 xとyの積が最大になるように、配列Aからペア(x、y)を見つける必要があります。配列には正または負の要素が含まれる場合があります。配列がA=[-1、-4、-3、0、2、-5]のようであるとすると、積が最大になるため、ペアは(-4、-5)になります。 この問題を解決するには、positive_max、positive_second_max、negative_max、negative_second_maxの4つの数値を追跡する必要があります。最後に、(positive_max *positive_second_max)が(negative_ma
-
C++で指定された違いを持つペアを見つけます
配列Aがあるとすると、n個の異なる要素があります。 xとyの差が与えられた差dと同じになるように、配列Aからペア(x、y)を見つける必要があります。要素のリストがA=[10、15、26、30、40、70]のようで、差が30の場合、ペアは(10、40)と(30、70)になります この問題を解決するために、配列がソートされていると仮定し、左から2つのポインターをポイント要素に取ります。最初は、最初の1つの「i」が最初の要素を指し、2番目の「j」がポイント要素を指します。 2番目の要素。 A [j] – A [i]がnと同じ場合、ペアを出力します。A[j] – A [i]
-
マンハッタン距離の合計がC++で最小になるような点を見つけます
K次元空間にn個の異なる点があり、nの値が範囲(2、105)にあり、kの値が範囲(1〜5)にあるとします。結果の点からn点までのマンハッタン距離の合計が最小になるように点を決定する必要があります。 2点P1(x1、y1)とP2(x2、y2)の間のマンハッタン距離は| x1 –x2|です。 + | y1 –y2|。次元が3で、(1、1、1)、(2、2、2)、(3、3、3)のような3つのポイントがあるとすると、出力は(2、2、2)になります。 この問題を解決するには、すべてのK次元の点を並べ替え、各k次元の中央の要素から出力を取得する必要があります。 例 #include<iostrea
-
C++で最大の幾何平均を持つサブセットを検索します
ここに、いくつかの要素を含む配列Aがあります。私たちのタスクは、幾何平均が最大になるサブセットを見つけることです。 A =[1、5、7、2、0]とすると、幾何平均が最大のサブセットは[5、7]になります。 これを解決するために、1つのトリックに従います。最大の2つの要素が最大の幾何平均を形成し、最大の2つの要素がサブセットとして返されることがわかっているため、平均は見つかりません。 例 #include <iostream> using namespace std; void largestGeoMeanSubset(int arr[], int n) { &nbs
-
0からN-1までの整数を含み、C++では主対角線に0のみが含まれる必要がある次数Nの対称行列を見つけます。
ここでは、次数Nの対称行列を1つ生成する方法を説明します。各行の要素には、0からN –1までの数値が含まれます。対角要素は常に0になります。 このタスクは簡単です。NxNの行列を作成し、各行iと各列jについて、iとjが同じ場合は、0としてマークします。それ以外の場合は、1つのカウンターを1からN –1に増やします。個々の行の値を配置します。 例 #include <iostream> using namespace std; void makeSymmetricMatrix(int n) { int matrix[n][n];
-
C++で重複するすべてのサブツリーを検索する
二分木があると考えてください。ツリーに重複するサブツリーがあるかどうかを確認する必要があります。以下のような二分木があるとします- サイズ2の2つの同一のサブツリーがあります。各サブツリーD、BD、およびBEには、両方とも重複するサブツリーがあります。ツリーのシリアル化とハッシュプロセスを使用して、この問題を解決できます。サブツリーの順序どおりの走査をハッシュテーブルに格納します。空のノードには開き括弧と閉じ括弧を挿入します。 例 #include <iostream> #include <unordered_set> #include <unordere
-
C++でn以下のすべての階乗数を検索します
ここでは、n以下のすべての階乗数を出力する方法を説明します。数値Nは、正の数の階乗である場合、階乗数と呼ばれます。したがって、いくつかの階乗数は1、2、6、24、120です。 階乗数を印刷するために、階乗を直接見つける必要はありません。 i =1から始めて、階乗*iを出力します。最初は階乗は1です。理解を深めるためにコードを見てみましょう。 例 #include <iostream> using namespace std; void getFactorialNumbers(int n) { int fact = 1; int
-
C ++でa%b =kとなるような配列内のすべてのペア(a、b)を検索します
配列Aがあるとすると、その配列から、a%b =kとなるようにすべてのペア(a、b)を取得する必要があります。配列がA=[2、3、4、5、7]、k =3であるとすると、ペアは(7、4)、(3、4)、(3、5)、(3、7)になります。 これを解決するために、リストをトラバースして、指定された条件が満たされているかどうかを確認します。 例 #include <iostream> using namespace std; bool displayPairs(int arr[], int n, int k) { bool pairAvilable = true;
-
C++でab=cdを満たす配列内のすべてのペア(a、b)と(c、d)を検索します
配列Aがあるとすると、その配列から、ab =cdとなるように2つのペア(a、b)と(c、d)を選択する必要があります。配列A=[3、4、7、1、2、9、8]とします。出力ペアは(4、2)と(1、8)です。これを解決するには、次の手順に従います- i:=0からn-1の場合、do for j:=i + 1 to n-1、do get product =arr [i] * arr [j] 製品がハッシュテーブルに存在しない場合、Hash [product]:=(i、j) 製品がハッシュテーブルに存在する場合は、前の要素と現在の要素を出力します。 例 #include <
-
C++の特定の混合物で目標比率を達成するために追加する量を見つけます
サイズXのコンテナがあるとします。このコンテナには水と他の液体の混合物があり、その混合物にはW%の水が含まれています。 Y%に対する水の比率を増やすには、いくつの水を追加する必要があるかを見つける必要がありますか? X =125、W =20、Y =25の場合、出力は8.33リットルになります。 前の混合物に一定量の水を追加する必要があるとすると、新しい量はX + Aになります。したがって、混合物中の水の量はこの式に従います。 Old Amount + A =((W%of X)+ A) また、混合物中の水の量=新しい混合物中の水の新しいパーセンテージ。つまり、これは(X + A)のY%です
-
対角線を埋めて、c ++を使用して、すべての行、列、および対角線の合計を3×3行列に等しくします。
最初は対角要素が空である3x3行列が1つあるとします。行、列、対角線の合計が同じになるように対角線を塗りつぶす必要があります。行列が-のようなものであると仮定します 充填後は− 対角要素がx、y、zであると仮定します。値は-になります x =(M [2、3] + M [3、2])/ 2 z =(M [1、2] + M [2、1])/ 2 y =(x + z)/ 2 例 #include<iostream> using namespace std; void displayMatrix(int matrix[3][3]) {  
-
C ++を使用して、xとその数字の合計が与えられたnと等しくなるような数xを見つけます。
ここで、1つの問題が発生します。ここで、数値nを取得する場合、x +桁の合計xが指定された数値nと同じになるように、xなどの別の値を見つける必要があります。 nの値が21であると仮定します。このプログラムは、15+桁の合計15、つまり15 + 1 + 5 =21=nとして数値x=15を返します。 この問題を解決するには、単純なアプローチに従う必要があります。 1からnまで繰り返し、各繰り返しで、数値とその桁の合計の合計が数値と同じであるかどうかを確認し、停止します。それ以外の場合は続行します。 例 #include<iostream> using namespace std; i
-
C++を使用してすべての要素が割り切れるような配列要素を見つけます
要素が少ない配列Aがあるとします。すべての要素をそれで分割できるように、Aから要素を見つける必要があります。 Aが[15、21、69、33、3、72、81]のようであるとすると、すべての数値は3で割り切れる可能性があるため、要素は3になります。 この問題を解決するために、Aの最小の数値を取得し、すべての数値を最小の数値で除算できるかどうかを確認します。はいの場合は数値を返し、そうでない場合はfalseを返します。 例 #include<iostream> #include<algorithm> using namespace std; int getNumber(in
-
c ++を使用して、左側の配列の合計が右側の配列の合計と等しくなるような配列内の要素を検索します。
配列Aがあり、n個の要素があるとします。私たちのタスクは、各サブアレイの合計が同じになるように、配列Aを2つのサブアレイに分割することです。配列A=[2、3、4、1、4、5]とすると、出力は1であるため、1の前と後のサブ配列が取得されます。 [2、3、4]、および[4、5]。 この問題を解決するために、right_sumの最初の要素を除く配列全体を計算します。それがパーティショニング要素であると考えてください。左から右にトラバースします。 right_sumから要素を減算し、left_sumに要素を追加すると、right_sum=left_sumの場合にポイントが取られます。 例 #incl
-
C ++を使用して、括弧の文字列から等しい点を見つけます。
ここでは、括弧の文字列で等しいポイントを取得する方法を説明します。等しい点はインデックスIであり、その前の開始ブラケットの数は、その後の終了ブラケットの数と等しくなります。ブラケット文字列が「(()))(()()())))」のようなものであるとすると、よく見ると次のようになります したがって、0から9までの開始ブラケットの数は5であり、9から14までの終了ブラケットの数も5であるため、これは同じポイントです。 この問題を解決するには、次のいくつかの手順に従う必要があります- すべてのインデックスiまでの文字列に表示される開き角かっこの数を保存します すべてのインデックスIまでの文字