-
C++での平均の最大の合計
数値Aの行を最大でK個の隣接するグループに分割するとし、スコアを各グループの平均の合計として設定します。達成できる最大のスコアを見つける必要があります。 A =[9,1,2,3,9]でKが3であるとすると、結果は20になります。これは、Aを[9]、[1、2、3]に分割することが最善の選択であるためです。 [9]。したがって、答えは9 +(1 + 2 + 3)/ 3 + 9 =20です。Aを[9、1]、[2]、[3、9]、に分割することもできます。 これを解決するには、次の手順に従います- 行列dpを定義する 再帰メソッドsolve()を定義します。これには、配列A、インデックス、およびkが
-
C++のリンクリストコンポーネント
頭を与えたとしましょう。これは、一意の整数値を含むリンクリストのヘッドノードです。これで、リンクリストの値のサブセットであるリストGも与えられます。 Gで連結成分の数を見つける必要があります。ここで、2つの値がリンクリストに連続して表示される場合、それらは連結されています。したがって、リストが[0,1,2,3]のようで、G =[0,1,3]の場合、0と1が接続されているため、出力は2になります。したがって、2つのリスト[0,1]と[3]。 これを解決するには、次の手順に従います- ret:=0、集合sを作成し、Gのすべての要素をsに挿入します フラグ:=false ヘッドがnullでは
-
C++での単語の短いエンコーディング
単語のリストがあるとすると、参照文字列SとインデックスAのリストを記述してエンコードできます。たとえば、単語のリストが[time、 me、bellであるかどうかを考えてみましょう。 ]の場合、S =time#bell#およびindexes =[0、2、5]と書くことができます。ここでは、インデックスごとに、「#」記号に到達するまで、そのインデックスの参照文字列から読み取ることで単語を復元します。 それで、与えられた単語をエンコードする可能な最短の参照文字列Sの長さを見つける必要がありますか?したがって、与えられた例では、出力は10になります。 これを解決するには、次の手順に従います- i
-
C++でのカードフリッピングゲーム
テーブルにN枚のカードがあり、各カードの両面に正の整数が印刷されているとします(おそらく異なる)。カードをいくつでも裏返す必要があり、1枚のカードを選んだ後。選択したカードの裏側にある番号Xがどのカードの表側にもない場合、番号Xは良好であると見なされます。良い最小の数を見つけなければなりませんか?良い数字がない場合は0を返します。ここで、fronts[i]とbacks[i]は、カードiの表と裏の番号を表します。フリップすると表と裏の数字が入れ替わるため、表の値が裏になり、その逆も同様です。 したがって、入力がfronts=[1,2,4,4,7]およびbacks=[1,3,4,1,3]のようで
-
C++の要素を持つ二分木
正の整数のリストがあるとします。その値は1より大きいです。これらの整数を使用して二分木を作成します。各数値は何度でも使用できます。各非リーフノードは、その子の生成物である必要があります。それで、私たちは何本の木を作ることができるかを見つけなければなりませんか?答えはモジュロ10^9 + 7で返されます。したがって、入力が[2,4,5,10]の場合、[2]、[4]のように7つのツリーを作成できるため、答えは7になります。 、[5]、[10]、[4,2,2]、[10,2,5]、[10,5,2] これを解決するには、次の手順に従います- マップdpを定義する 配列Aを並べ替える、n:=配列Aの
-
C++の適切な年齢の友達
友達リクエストをする人がいるとしましょう。私たちは彼らの年齢を知っています、これらはages[i]に保存されています。つまり、これはi番目の人の年齢を示しています。これで、次の条件のいずれかが当てはまる場合、Aは人物B(B!=A)を友達リクエストしません- 年齢[B]<=0.5*年齢[A]+7 年齢[A] 100&&年齢[A]<100 それ以外の場合、AはBを友達リクエストします。AがBをリクエストした場合、Bは必ずしもAをリクエストするとは限りません。また、人々は自分自身を友達リクエストしません。では、友達リクエストの総数を見つける必要がありますか? 17になるため、結果は2になり
-
C++で文字列を検索して置換
文字列Sがあるとすると、文字のグループを新しい文字に置き換えるいくつかの置換操作を実行します。各置換操作には、開始インデックスi、ソースワードx、およびターゲットワードyの3つのパラメータがあります。ここでの規則は、xが元の文字列Sの位置iで始まる場合、xの出現をyに置き換えるというものです。それ以外の場合は何もしません。 したがって、例として、S =abcdがあり、置換操作i =2、x =cd、y =ffffがある場合、 cdは元の文字列の位置2から始まるため、考えてみます。 S、これを「ffff」に置き換える必要があります。 置換操作i=0、x =ab、y =eeeと、別の置換操作i
-
C++の新しい21ゲーム
リマが次のゲームをプレイするとします。これは、カードゲーム「21」に大まかに基づいています。したがって、リマは0ポイントから始めて、Kポイント未満の間に数字を描きます。さて、各ドローの間に、彼女は範囲[1、W]からランダムに整数のポイントを獲得します。ここでWは与えられ、それは整数です。現在、各抽選は独立しており、結果は同じ確率になります。リマは、K以上のポイントを獲得すると、数字の描画を停止します。彼女のポイントがN以下である確率を見つける必要がありますか? したがって、N =6、Kが1、Wが10の場合、リマは1枚のカードを取得して停止するため、答えは0.6になります。10の確率のうち6で
-
C++の配列で最長の山
次のプロパティが当てはまる場合は、(Aの)サブアレイBを山と呼びます- =3 B [0]
-
C++でのストレートの手
リマが整数の配列として与えられたカードの手を持っていると仮定します。ここで、彼女はカードをグループにシャッフルして、各グループのサイズがWで、連続するW枚のカードで構成されるようにします。可能かどうかを確認する必要があります。 したがって、カードが[1,2,3,6,2,3,4,7,8]であり、W =3の場合、彼女は[1,2,3]のようにカードを再配置できるため、答えは真になります。 、[2,3,4]、[6,7,8] これを解決するには、次の手順に従います- マップmを定義し、手にある各要素の頻度をmに保存します 手のサイズは0ではありません prev:=0 it:=mの最初のキー
-
C++での文字のシフト
小文字の文字列Sがあり、整数配列がシフトするとします。文字のシフトは、アルファベットの次の文字を意味します。zの場合、それはaになります。ここで、shifts [i] =xごとに、Sの最初のi+1文字をx回シフトします。このようなSへのシフトがすべて適用された後、最終的な文字列を見つける必要があります。したがって、文字列が「abc」でshifts =[3,5,9]の場合、Sの最初の1文字を3シフトすると、「dbc」になり、Sの最初の2文字を5シフトすると、「igc」になります。 」、Sの最初の3文字を9シフトすると、「rpl」が得られます。これが答えです。 これを解決するには、次の手順に従い
-
C++での車のフリート
1車線の道路に沿って同じ目的地に向かうN台の車があるとします。目的地は「ターゲット」マイル離れています。これで、各車iの速度値は一定のspeed [i](マイル/時)になり、初期位置は道路に沿ってターゲットに向かって位置[i]マイルになります。 車が前方の別の車を追い越すことはできませんが、それに追いつき、同じ速度でバンパーからバンパーへと追いつくことができます。ここでは、これら2台の車の間の距離は無視されます-それらは同じ位置にあると想定されます。車のフリートは、同じ位置と同じ速度で運転する空でない車のセットです。 1台の車が目的地で車のフリートに追いついた場合でも、1台の車のフリートと見
-
C++での括弧のスコア
バランスの取れた括弧文字列Sがあるとすると、次のルールに基づいて文字列のスコアを計算する必要があります- ()のスコアは1です ABのスコアはA+Bです。ここで、AとBは2つのバランスの取れた括弧文字列です。 (A)のスコアは2 * Aです。ここで、Aはバランスの取れた括弧文字列です。 したがって、入力が「(()(()))」のような場合、出力は6になります。 これを解決するには、次の手順に従います- ans:=0、スタックstを定義します 0から文字列Sのサイズまでの範囲のiの場合 S [i]が括弧を開いている場合は、スタックに-1を挿入します それ以外の場合 スタックの最上位が
-
C++でのミラーリフレクション
4つの壁のそれぞれに鏡のある特別な正方形の部屋があるとします。南西の角を除く各角に受容体があります。これらには0、1、2の番号が付けられています。正方形の部屋には長さpの壁があり、南西の角からのレーザー光線が最初に0番目の受容体から距離qで東の壁に当たります。光線が最初に出会う受容体の数を見つける必要があります。 したがって、p =2、q =1の場合、ケースは次のようになります- したがって、光線が最初に反射して左壁に戻るときに、光線が受容体2に出会うため、出力は2になります。 これを解決するには、次の手順に従います- pとqはどちらも偶数ですが、 p:=p / 2 q:
-
文字列の文字をC++で大文字と小文字を逆に変換する
任意の長さの文字列が与えられます。タスクは、大文字の文字列を小文字に変換し、小文字を大文字に変換することです。 例 入力 − string str =”ようこそサイトへ!” 出力 −サイトへようこそ! 説明 − W、T、T、Sの文字を小文字に、e、l、c、o、m、e、o ,, i、t、eの文字を大文字に変換し、特殊文字に対する操作は実行しません。 入力 − string str =” HELLO” 出力 −こんにちは 説明 −文字H、E、L、L、Eを小文字に変換しました。 これは、2つの異なるアプローチを使用して実行できます C ++が提供する組み込み関数を使用して、こ
-
C++で2つの文字列の一般的な文字を数える
2つの文字列、たとえばstr1とstr2が与えられ、タスクは2つの文字列の共通文字の数を見つけることです。つまり、str1 [i] =str [j]の場合、それらはペアと見なされ、数が増加します。 1になり、str1 [i]!=str2 [j]の場合、それらはペアとは見なされず、カウントは1に増加しません。 例 Input − str1 = “hello” str2 = “heoo” Output − count is: 3 説明 − str1 [0] =str2 [0]つまり、
-
C++の整数の偶数桁と奇数桁をカウントします
整数が与えられ、タスクは1桁の偶数と奇数を数えることです。また、整数の偶数桁が偶数回発生しているかどうか、また整数の奇数桁が奇数回発生しているかどうかをチェックし続けます。 例 Input − digit = 12345 Output − count for even digits = 2 count for odd digits = 3 説明 −はい、また、偶数桁は偶数回、つまり2回発生し、奇数桁は奇数回、つまり3回発生しています Input − digit = 44556 Output − coun
-
C++で指定された範囲の階乗数をカウントします
変数が保持する整数値から始まり、たとえば開始から変数の終了までの範囲が与えられます。タスクは、指定された範囲で使用可能な階乗数の総数をカウントすることです。 階乗数とは 数値の階乗は、数値の桁を1で除算しながら、数値の桁を乗算することによって計算されます。これは、記号「!」で示されます。つまり、0!、1!、2!、3!、5!、...です。 、等。 0の階乗!と1!常に1です。 I.e. factorial of 2 = 2 * (2-1) = 2 * 1 = 2 factorial of 3 = 3 * (3-1) * (2-1) = 3 * 2 *
-
C++の階乗の桁を数える
整数値が与えられ、タスクは最初に数値の階乗を計算し、次に結果の合計桁数を計算することです。 階乗数とは 数値の階乗は、数値の桁を1で除算しながら、数値の桁を乗算することによって計算されます。これは、記号「!」、つまり0!、1!、2!、3!、5!、..で示されます。 。、等。 0の階乗!と1!常に1です。 I.e. factorial of 2 = 2 * (2-1) = 2 * 1 = 2 factorial of 3 = 3 * (3-1) * (2-1) = 3 * 2 * 1 = 6 例 Input − factorial(6) O
-
C ++のO(Log n)時間とO(1)空間で指定された範囲のフィボナッチ数を数えます
開始番号と終了番号の範囲が与えられ、タスクは、O(Log n)時間とO(1)空間の指定された範囲の間で利用可能なフィボナッチ数の総数を計算することです。 フィボナッチ数とは フィボナッチ数は、フィボナッチ数列と呼ばれる数列であり、新しい数はすべて、前の2つの数の合計です。 ここで、f(0)=0およびf(1)=1、つまりf(0)およびf(1)はシーケンス内の固定位置にあり、計算は3番目の数値から開始されます。 シーケンスの計算に使用される式は-です F n =F n-1 + F n-2 どこで、 F 0 =0、F 1 = l 例 Input &minus