-
C ++で単語のセットを同じ長さの行に変換することにより、単語のセットを正当化するプログラム
単語のリストと幅kがあるとすると、各行の文字数が正確にkで、テキストが完全に揃えられるようにテキストを配置する必要があります。ここでは、各行に挿入できる限り多くの単語をパックします。また、必要に応じて余分なスペースを埋めて、各行が正確にk文字になるようにします。 ここでは、単語間の余分なスペースをできるだけ均等に配置する必要があります。 1行のスペースの数が単語間で均等に分割されていない場合、左側の空のスロットには、右側のスロットよりも多くのスペースが割り当てられます。テキストの最後の行は、左揃えにし、単語の間に余分なスペースを挿入しないでください。 したがって、入力が[The、 grum
-
合計がC++で最大であるk個の重複しないサブリストの合計を見つけるプログラム
numsと呼ばれる数値のリストがあり、別の値kがあるとすると、それらの合計の合計が最大になるように、k個の重複しない空でないサブリストを見つける必要があります。 kはnumsのサイズ以下であると見なすことができます。 したがって、入力がnums =[11、-1、2、1、6、-24、11、-9、6] k =3の場合、サブリストを選択できるため、出力は36になります[11 、-1、2、1、6]、[11]、および[6]を使用して、[19、11、6]=36の合計を取得します。 これを解決するには、次の手順に従います- n:=numsのサイズ nが0と同じか、kが0と同じ場合、- 0を返す
-
C++で等しい合計のk個のパーティションでリストをパーティション化できるかどうかをチェックするプログラム
numsと呼ばれる数値のリストと別の値kがあるとすると、各サブセットの合計が同じであるk個の異なるサブセットにnumsを分割できるかどうかを確認する必要があります。 したがって、入力がnums =[4、2、6、5、1、6、3] k =3のようである場合、出力はTrueになります。これは、[6、3]、[6]のように分割できるためです。 、2、1]、および[4、5]。 これを解決するには、次の手順に従います- 関数check()を定義します。これには、配列vが必要です。 iを初期化する場合:=1、i
-
C++で合計が等しい2つのセットの最大合計を見つけるプログラム
numsと呼ばれる数値のリストがあるとします。ここで、合計が同じで最大である2つのセットを見つけてから、合計値を見つけます。 したがって、入力がnums =[2、5、4、6]の場合、セットは[2、4]と[6]であるため、出力は6になります。 これを解決するには、次の手順に従います- 合計:=0 numsの各数値iについて、 sum:=sum + i n:=numsのサイズ サイズ(n + 1)x(2*合計+5)の2D配列dpを1つ定義し、-1で埋めます dp [0、sum]:=0 iを初期化する場合:=1、i <=nの場合、更新(iを1つ増やす)、実行- x:=nu
-
C++のサフィックスでもある最長のプレフィックスを見つけるプログラム
文字列sがあるとすると、sの最長のプレフィックスを見つける必要があります。これは、サフィックスでもあります(それ自体を除く)。そのようなプレフィックスがない場合は、単に空白の文字列を返します。 したがって、入力が「madam」のような場合、出力は「m」になり、それ自体を除いて4つのプレフィックスがあります。これらは、「m」、「ma」、「mad」、「mada」、および「m」、「am」、「dam」、「adam」のような4つの接尾辞です。接尾辞でもある最大の接頭辞は「m」で与えられます。 これを解決するには、次の手順に従います- 関数lps()を定義します。これにはsがかかります n
-
C++で削除するのに最適な間隔を見つけるためのプログラム
重複する可能性のある間隔のリスト(両端を含む)があるとします。ここで、1つの間隔を削除し、残りの間隔をマージして、残りの間隔の数をカウントする操作があると考えてください。削除後に可能な残りの間隔の最大数を見つける必要があります。 したがって、入力がinterval =[[5、8]、[6、7]、[7、10]、[9、11]]のような場合、出力は2になります。これは- 間隔[5、8]を削除すると、マージとして[6、11]が得られます。 間隔[6、7]を削除すると、マージとして[5、11]が得られます。 間隔[7、10]を削除すると、[5、8]、[9、11]がマージとして取得されま
-
C++で数値の次の整数順列を取得するプログラム
数nがあるとすると、その数字の次に大きな順列を見つける必要があります。 nがすでに最大の順列にある場合は、最小の順列まで回転させます。 したがって、入力がn =319の場合、出力は391になります。 これを解決するには、次の手順に従います- 関数makeArray()を定義します。これにはxが必要です 配列retを定義する xがゼロ以外の場合、-を実行します。 retの最後にxmod10を挿入します x:=x / 10 配列を逆にするret retを返す 関数combine()を定義します。これは配列vを取ります ret:=0
-
C++でnを0に減らすために必要な操作の数を見つけるプログラム
数nがあるとします。ここで、1。nを1つデクリメントする2. nが偶数の場合は、n / 2をデクリメントします。3。nが3で割り切れる場合は、2 *(n / 3)をデクリメントします。 nをゼロにデクリメントするために必要な操作の最小数。 したがって、入力がn =16の場合、出力は5になります。これは、n=16でもn/2を4倍減らすと、1になります。次に1を減らすと、0になります。合計5操作。 これを解決するには、次の手順に従います- 1つのマップdpを定義する 関数dfs()を定義します。これにはxが必要です ret:=x xがdpの場合、- dp [x]
-
C++で購入者が購入できるパッケージの最大数を見つけるためのプログラム
販売と購入者の2つのリストがあるとします。 salesの各要素には、[day、price]の形式で2つの値が含まれます。これは、パッケージがその特定の価格でその日にのみ販売可能であることを示します。また、[payday、amount]の形式の購入者の各要素は、購入者が支払い日以降に使用できる金額を持っていることを示します。各購入者が最大で1つのパッケージを購入でき、各パッケージを1人だけに販売できる場合は、購入できるパッケージの最大数を見つけます。 したがって、入力がsales =[[0、5]、[0、5]、[0、6]、[1、4]、[1、5]、[3、4]]の場合、buyers =[[ 0、4]
-
与えられた単語がC++で与えられたパターンを維持しているかどうかをチェックするプログラム
パターンpと文字列strがあるとすると、strが同じパターンに従うかどうかを確認する必要があります。ここで続くとは、パターン内の文字とstr内の空でない単語の間に全単射があることを意味します。 したがって、入力がpattern =cbbc、str =word pattern pattern wordのような場合、出力はTrueになります。 これを解決するには、次の手順に従います- strcin:=str 配列ワードを定義する strcinの単語ごとに 単語の最後に単語を挿入 1つのマップp2iを定義する i:=0 pat:=空の文字列
-
C++プログラムでアクセスするたびに最大値が減少するときの配列からの最大値
この問題では、N個の整数と整数mの配列arr[]が与えられます。私たちのタスクは、アクセスのたびに最大値が減少したときに、配列から最大値を見つけるプログラムを作成することです。 問題の説明 −配列の最大要素の最大合計を見つけ、最大値を1k倍減らす必要があります。 問題を理解するために例を見てみましょう 入力 arr[] = {3, 6, 7, 8, 8}, k = 3 出力 説明 First iteration: array before = {3, 6, 7, 8, 8}, max = 8, sum = 8, array after update = {3, 6, 7, 7, 8}
-
C++ですべてのノードを接続するために重複しないエッジを配置できる方法の数をカウントするプログラム
循環的に配置されたノードの数を表す数nがあるとします。すべてのノードがエッジで接続され、エッジが互いに交差しないように、n/2個のエッジを配置できる方法の数を見つける必要があります。答えが非常に大きい場合は、結果mod 10 ^ 9+7を返します。 したがって、入力がn =4の場合、出力は2になります。これは、以下のようにグループ化できるためです- これを解決するには、次の手順に従います- サイズ(n / 2 + 1)の配列dpを定義します dp [0]:=1、dp [1]:=1 m:=10 ^ 9 + 7 初期化i:=2の場合、i <=n / 2の場合、更新(
-
C++プログラムのサフィックスの個別の整数の数のクエリ
この問題では、n個の整数値の配列arr[]が与えられます。そして、Qはそれぞれ整数kを持つクエリを実行します。私たちのタスクは、サフィックス内の個別の整数の数のクエリを解決するプログラムを作成することです。 問題の説明 −接尾辞の個別の整数のクエリを解決する必要があります。クエリごとに、kからnまでの一意の要素の数を見つける必要があります。つまり、arr[k]からarr[n]までの一意の要素を数えます。 取得された配列は1つのインデックスが付けられています。 問題を理解するために例を見てみましょう 入力 arr[ ] = {5, 1, 2, 1, 6 , 5}, n = 6, Q =
-
数値がC++プログラムのL-RのN範囲にあるかどうかを確認するためのクエリ
この問題では、n個の範囲(L、R)、L-Rで構成される2次元行列arr[][2]が与えられます。そして、Qはそれぞれ整数値で構成されるクエリを実行します。私たちのタスクは、クエリを解決して、数値がL-RのN範囲にあるかどうかを確認するプログラムを作成することです。 問題の説明 −ここでは、クエリの各要素がいずれかの範囲に含まれるように、各クエリを解決します。 範囲を重複させることはできません。 問題を理解するために例を見てみましょう 入力 arr[n][2] = { {5, 7}, {1, 3}, {9, 12} } n = 3 Q = 2, query = {10, 4} 出力 Y
-
C++プログラムでサークル内のボックスを結合できるかどうかを確認するためのクエリ
この問題では、円の端にあるn個のボックスを表す番号nが与えられます。そして、それぞれが2つの整数aとbで構成されるQクエリがあります。私たちの仕事は、クエリを解決して、ボックスを円で結合できるかどうかを確認するプログラムを作成することです。 問題の説明 −各クエリを解決するには、最後のクエリのボックスの交差が妨げられないように、ボックスaとボックスbをロッドで接続する可能性を確認する必要があります。 可能を印刷する必要があります または不可能 状態に基づいています。 問題を理解するために例を見てみましょう 入力 n = 6 Q = 3 Queries = {{1, 3}, {2, 5},
-
C++で指定された行列の1の正方形のサブ行列の数を数えるプログラム
2次元のバイナリ行列があるとすると、すべて1の部分行列の総数を見つける必要があります。 したがって、入力が次のような場合 1 1 0 1 1 0 0 0 1 その場合、出力は10になります。これは、1 x 1行列が5つ、2x1行列が2つあるためです。 2つの1x2行列。そして、1つの2x2マトリックス。 これを解決するには、次の手順に従います- 関数getAns()を定義します。これは、配列a、を取ります。 ret:=0 n:=aのサイズ サイズnの配列vを定義します 1つのスタックstを定義する
-
C++プログラムでsubstring[L…R]が回文であるかどうかを確認するためのクエリ
この問題では、文字列str、substring [L...R]の2つの値LとRでそれぞれ構成されるクエリのQ数が与えられます。私たちのタスクは、サブストリング[L…R]が回文であるかどうかをチェックするためにクエリを解決するプログラムを作成することです。 問題の説明 −各クエリを解決するには、LからRの範囲内で作成された部分文字列が回文であるかどうかを確認する必要があります。 問題を理解するために例を見てみましょう 入力 str = “abccbeba” , Q = 3 Query[][] = {{1, 4}, {0, 6}, {4, 6}} 出力 Palindr
-
C++プログラムでL番目に小さい数値とR番目に小さい数値の絶対差を返すクエリ
この問題では、サイズnの配列arr []と、それぞれ2つの値LとRで構成されるQクエリが与えられます。私たちのタスクは、クエリを解決してL番目に小さい数とR番目に小さい数。 問題の説明 −各クエリを解決するには、L番目に小さい数とR番目に小さい数のインデックスを見つける必要があります。そして、これらのインデックスの違いを見つけてください。 問題を理解するために例を見てみましょう 入力 arr[] = {8, 4, 1, 5, 2} Q = 2 Queries[][] = {{2, 4}, {1, 5}} 出力 1 2 説明 For {2, 4}: 2nd smallest element
-
C++でパリンドロームサブリストを削除するために必要な操作の数を見つけるためのプログラム
numsという番号のリストがあるとします。ここで、回文であるサブリストを削除する操作について考えてみましょう。リストが空になるように、必要な操作の最小数を見つける必要があります。 したがって、入力がnums =[6、2、4、4、2、10、6]のような場合、最初にサブリスト[2、4、4、2]を削除してから、リストは[6、10、6]のようなものです。これも回文素数なので、リストを空にするには削除します。 これを解決するには、次の手順に従います- サイズが105x105の配列dpを定義します。 関数dfs()を定義します。これには、i、j、配列v、が必要です。 ret:=inf
-
文字を置き換えて文字列を別の文字列にすることができるかどうかをチェックするプログラム(C ++ではない)
2つの小文字の文字列sとtがあるとします。ここで、s内の文字のすべての出現箇所を別の文字に置き換える操作について考えてみます。この操作を何度でも実行できる場合は、sをtに変換できるかどうかを確認する必要があります。 したがって、入力がs =eye t =pipの場合、「e」を「p」に置き換え、「y」を「i」に置き換えることができるため、出力はTrueになります。 これを解決するには、次の手順に従います- 1つのマップm1と別のマップm2を定義します n:=sのサイズ 初期化i:=0の場合、i