-
C++を使用して配列を適切にするために削除する必要のある要素の最小数。
問題の説明 配列「arr」が与えられた場合、タスクは、配列を適切にするために削除する要素の最小数を見つけることです。 シーケンスa1、a2、a3。 。 .anは、各要素a [i]に対して、a [i] + a [j]が2の累乗であるような要素a[j](iはjと等しくない)が存在する場合に適切と呼ばれます。 arr1[] = {1, 1, 7, 1, 5} 上記の配列で要素「5」を削除すると、配列は適切な配列になります。この後、arr [i] +arr[j]の任意のペアは2の累乗です- arr [0] + arr [1] =(1 + 1)=2この2の累乗 arr [0] + arr [
-
C++を使用して中央値をxに等しくするために追加する要素の最小数。
問題の説明 サイズnと要素xの配列「arr」が与えられた場合、タスクは、中央値がxに等しくなるように配列に追加される要素の最小数を見つけることです。 長さnの配列の中央値は、要素を降順ではない順序で並べ替えた後、位置番号(n-1)/2を占める要素です。たとえば、以下の配列の中央値は20-です。 arr1 [] ={10、20、30、40} arr [] ={1、2、3}およびx =4の場合、中央値を4に等しくするために、配列に4つの数値、つまり{4、5、5、5}を追加する必要があります アルゴリズム アルゴリズムは非常に単純です。配列の中央値がxと等しくなるまで、配列に1つの数値x
-
C++を使用してXORを最大にするために削除する要素の最小数。
問題の説明 数Nが与えられます。タスクは、残りの要素から取得されるXORが最大になるように、Nまでの間に削除される要素の最小数を見つけることです。 アルゴリズム 1. If n is 1 or 2 then there is no need to remove any element. Hence answer is zero 2. Find a number which is power of 2 and greater than or equal to. Let us call this number as nextNumber 2.1. If n == nex
-
C++を使用してNを25で割り切れるのに必要な所定の移動の最小数。
問題の説明 先行ゼロのない数値Nが与えられます。タスクは、Nを25で割り切れるのに必要な最小移動数を見つけることです。各移動で、隣接する2桁を入れ替えて、いつでも数値に先行ゼロが含まれていないことを確認できます。 Nを25で割り切れない場合は、-1を出力します N =5071の場合、25で割り切れるには4回の移動が必要です 5071 → 5701 → 7501 → 7510 → 7150 アルゴリズム 1. Iterate over all pairs of digits in the number. Let the first digit in t
-
C++を使用して2つの文字列を等しくするために必要な特定の操作の最小数。
問題の説明 2つの文字列str1とstr2がある場合、両方の文字列に文字「a」と「b」が含まれます。両方の文字列は同じ長さです。両方の文字列に1つの_(空のスペース)があります。タスクは、次の操作の最小数を実行することにより、最初の文字列を2番目の文字列に変換することです- _が位置Iにある場合、_は位置i+1またはi-1の文字と交換できます 位置i+1とi+2の文字が異なる場合、_は位置i+1またはi+2の文字と交換できます 同様に、位置i-1とi-2の文字が異なる場合、_は位置i-1またはi-2の文字と交換できます str1 =“ aba_a”およびstr2 =“
-
C++を使用して配信されるアイテムの最小数。
問題の説明 サイズの配列が与えられると、Nはバケットを表し、各配列インデックスにはアイテムが含まれます。すべてのアイテムを配達する必要があるKツアーを考えます。 1回のツアーで1つのバケットからのみアイテムを取得できます。タスクは、すべてのアイテムをKツアー内で配信できるように、ツアーごとに配信する必要のあるアイテムの最小数を指示することです。 アイテム={1、3、5、7、9}のバケットが5つあり、ツアーが10の場合、一度に3つのアイテムを配信することで、ツアーごとに3つのアイテムを配信できます。 最初のバケットサイズは1であるため、必要なツアーの数=1 2番目のバケットサイ
-
C++で合計nを作成するために必要な最小文字数。
問題の説明 整数nが与えられ、a =1、b =2、c =3、…..、z =26とします。タスクは、合計nを作成するために必要な最小文字数を見つけることです If n = 23 then output is 1 If n = 72 then output is 3(26 + 26 + 20) アルゴリズム 1. If n is divisible by 26 then answer is (n/26) 2. If n is not divisible by 26 then answer is (n/26) + 1 例 #include <iostream> using namesp
-
C++を使用してすべての質問を配布するために必要なメールの最小数。
問題の説明 テストでN個の質問があり、クラスでK人の生徒がいるとします。 K人の生徒のうち、N人の生徒がそれぞれ1つの質問を覚えました。メールには最大で約X個の質問を含めることができます。 クラス全体がすべての質問について知ることができるように、必要なメールの最小数を見つけます N =3、K =3、X =1の場合、6通のメールを送信する必要があります- 生徒1が生徒2と生徒3に質問を送信します(2通のメール) 学生2と学生3もそうなので、メールの総数=2 * 3 =6 アルゴリズム 最終的な答えは、次の式を使用して計算できます- ceil(N/X) * (K-N) + (( ce
-
C++を使用してすべての要素を等しくするための最小移動数。
問題の説明 N個の要素の配列と整数Kが与えられた場合、与えられた配列に対して次の操作を何度でも実行できます- K thを挿入します 配列の最後にある要素を削除し、配列の最初の要素を削除します。 タスクは、配列のすべての要素を等しくするために必要な最小移動数を見つけることです。不可能な場合は-1を印刷します If arr[] = {1, 2, 3, 4, 5, 6} and k = 6 then minimum 5 moves are required: Move-1: {2, 3, 4, 5, 6, 6} Move-2: {3, 4, 5, 6, 6, 6} Move-3: {
-
C++を使用して指定された高さのAVLツリー内のノードの最小数。
問題の説明 AVLツリーの高さを考えると、タスクはツリーが持つことができるノードの最小数を見つけることです。 If height = 0 then AVL tree can have one 1 node If height = 5 then AVL tree can have minimum 20 nodes アルゴリズム AVLツリーでは、高さのバランスプロパティを維持する必要があります。つまり、左右のサブツリーの高さの差は、ノードごとに-1、0、または1を超えることはできません。このプロパティを使用して、以下の漸化式を作成できます- 1. If height = 0 then ret
-
C++を使用してすべての要素を0にするための配列に対する操作の最小数。
問題の説明 サイズNの配列があり、各要素が1または0の場合、タスクは、すべての要素をゼロに変換するために実行される操作の最小数を計算することです。以下の操作を実行できます- 要素が1の場合、その値を0に変更してから- 次の連続する要素が1の場合、自動的に0に変換されます 次の連続する要素がすでに0の場合、何も起こりません。 If arr[] = {1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1} then 4 operation are required to make all elements zero アルゴリズム 1.If th
-
C++を使用して配列のすべての要素を削除するために必要な操作の最小数。
問題の説明 整数配列arrが与えられた場合、タスクは、配列のすべての要素を削除するために必要な最小数の操作を出力することです。制限に続いて要素を削除している間- 配列から任意の要素をランダムに選択でき、それで割り切れるすべての要素を配列から削除できます arr [] ={2、4、15、10、8、5、3}の場合、すべての要素を削除するには3つの操作が必要です- 2を選択すると、{2、4、10、8}が削除されます 5を選択すると、{5、15}が削除されます 3を選択すると、{3}が削除されます アルゴリズム 1. Sort the array in ascending or
-
C++を使用してバイナリ文字列Sに合計するために必要な操作の最小数。
問題の説明 与えられたバイナリ文字列str。 strで表される数を作成するために実行する必要のある操作の最小数を見つけます。以下の操作のみ実行可能- 2 xを追加します 2 xを引く バイナリ文字列が「1000」の場合、実行する必要がある操作は1つだけです。つまり、2 3を追加します。 バイナリ文字列が「101」の場合、2つの操作を実行する必要があります。つまり、2 2を追加します。 + 2 0 例 #include <iostream> #include <string> #include <algorithm> usin
-
C++を使用して目的のページに到達するための最小ページめくり数。
問題の説明 Nページの本が与えられた場合、タスクは、特定の目的のページKに到達するための最小ページめくり数を計算することです。 本の表側(つまり1ページ目から)または本の裏側(つまりページ番号N)からページめくりを開始できます。 各ページには表と裏の2つの面がありますが、最初のページには裏側のみがあり、最後のページには裏側のみがあり、本のページ数によって異なります。 N=5およびK=4の場合、最小1ページをめくる必要があります- (4,5) 後ろからページめくりを始めると、(4、5)1めくりが必要ですページめくり=1 したがって、最小ページ数=1です。 ア
-
C++を使用してNを合計として表現するために必要なパリンドロームの最小数。
問題の説明 数Nが与えられた場合、Nをそれらの合計として表現するために必要な回文数の最小数を見つける必要があります N =15の場合、2つの回文、つまり8と7が必要です。 アルゴリズム 1. Generate all the palindromes up to N in a sorted fashion 2. Find the size of the smallest subset such that its sum is N 例 #include <iostream> #include <vector> #include <climits> #incl
-
C++を使用する鉄道駅に必要なプラットフォームの最小数。
問題の説明 鉄道駅に到着するすべての列車の到着時刻と出発時刻を考えると、列車が待たないように、鉄道駅に必要なプラットフォームの最小数を見つけることがタスクです。 停車する列車の到着時刻と出発時刻を表す2つの配列が与えられます。 以下の入力には、少なくとも3つのプラットフォームが必要です- トレーニング 到着時間 出発時間 Train-1 09:00 09:15 Train-2 09:35 11:45 Train-3 09:40 11:05 Train-4 11:00 12:00 電車-5 14:30 1
-
C++を使用して軸の片側に残りのポイントを取得するために削除するポイントの最小数。
問題の説明 デカルト平面でN点が与えられます。私たちのタスクは、任意の軸の片側に残りのポイントを取得するために削除する必要があるポイントの最小数を見つけることです。 与えられた入力が{(10、5)、(-2、-5)、(13、8)、(-14、7)}の場合、(-2、-5)を削除すると、残りのすべてのポイントはXより上になります。 -軸。 したがって、答えは1です。 アルゴリズム 1. Finds the number of points on all sides of the X-axis and Y-axis 2. Return minimum from both of them 例 #in
-
C++を使用した合計がnに等しい電力項の最小数。
問題の説明 2つの正の整数NとXが与えられます。タスクは、Xの累乗の数が最小になるようにNをXの累乗の合計(X0 +X1+…..+Xn)として表すことです。 合計をNに等しくするために使用されるNの最小累乗数を出力します。 N=15およびX=3の場合、次のように「3」の3乗が必要です- 15 =(3 2 + 3 1 + 3 1 ) アルゴリズム 以下の式を使用して最終結果を計算します- 1. If x = 1, then answer will be n only (n = 1 + 1 +…. n times)s 2. Any number n can be
-
C ++を使用して、指定された数まで加算されるすべての組み合わせを検索します
正の数nがあるとします。正の数のすべての組み合わせを見つける必要があります。これは、その数になります。ここでは、順列ではなく、組み合わせのみが必要です。値n=4の場合、[1、1、1、1]、[1、1、2]、[2、2]、[1、3]、[4]になります。 これは再帰を使用して解決します。組み合わせを格納する配列があり、再帰的アプローチを使用してその配列を埋めます。各組み合わせは、要素の昇順で保存されます。 例 #include<iostream> using namespace std; void getCombination(int arr[], int index, int num,
-
C++を使用してバイナリツリーの2つの指定されたレベル番号の間のノードを印刷するプログラム
このチュートリアルでは、バイナリツリーの2つの指定されたレベル番号の間のノードを印刷するプログラムについて説明します。 ここでは、特定の二分木の低レベルと高レベルが与えられ、与えられたレベル間のすべての要素を印刷する必要があります。 これを解決するために、キューベースのレベルトラバーサルを使用できます。順序付けられたトラバーサルを移動している間、各レベルの最後にマーキングノードを設定できます。次に、各レベルに移動して、指定されたレベルの間にマーキングノードが存在する場合は、そのノードを印刷できます。 例 #include <iostream> #include <queu