-
Pythonのすべての異なるコースをカバーするために最小学期を数えるプログラム
番号nがあるとすると、1からnまでのラベルが付けられたn個の異なるコースがあることを示します。また、relations [i]にペア(prevCourse_i、nextCourse_i)が含まれる、relationsという配列もあります。これは、コースprevCourse_iとコースnextCourse_iの間の前提条件の関係を表します。したがって、コースprevCourse_iはコースnextCourse_iの前に取得する必要があります。そして、私たちが持っている最後のパラメータはkです。 1学期では、前の学期に受講しているコースのすべての前提条件を満たしている限り、最大k個のコースを受講で
-
Pythonで同様の端を削除した後に文字列の最小長を見つけるプログラム
a、b、およびcの3文字のみの文字列sがあるとします。次のアルゴリズムを文字列に何度でも適用します- プレフィックス内のすべての文字が同じであるsから空でないプレフィックスを選択します。 接尾辞のすべての文字が同じであるsから空でない接尾辞を選択します。 接頭辞と接尾辞は互いに素です。 プレフィックスとサフィックスの文字は同じである必要があります。 プレフィックスとサフィックスの両方をsから削除します。 最後に、上記の操作を何度でも(場合によってはゼロ回)実行した後、sの最小長を見つける必要があります。 したがって、入力がs =aabccabbaの場合、最
-
Pythonで石を取り除くことで最大スコアを見つけるプログラム
a、b、cの3つの値があるとします。サイズがそれぞれa、b、cの3つの石の山でソリティアゲームをプレイしています。毎ターン、プレイヤーは2つの異なる空でない山を選択し、それぞれから1つの石を取り、スコアに1ポイントを追加します。空でない山が2つ未満になると、ゲームは終了します。したがって、取得できる最大スコアを見つける必要があります。 したがって、入力がa =4、b =4、c =6の場合、初期状態は(4、4、6)であるため、出力は7になり、次の手順を実行できます- 現在の状態が(3、3、6)になるように、1番目と2番目の杭から選択します 現在の状態が(2、3、5)になるように、1
-
Pythonで2つの文字列の最大のマージを見つけるプログラム
2つの文字列sとtがあるとします。次の方法でmergeという文字列を作成します。sまたはtのいずれかが空でないときに、次のオプションのいずれかを選択します- sが空でない場合は、sの最初の文字を追加してマージし、sから削除します。 tが空でない場合は、tの最初の文字を追加してマージし、tから削除します。 最後に、形成できる辞書式順序で最大のマージを見つける必要があります。 したがって、入力がs =zxyxx t =yzxxxの場合、出力は zyzxyxxxxxになります。 これを解決するには、次の手順に従います- a:=0、b:=0 マージ:=空白の文字列
-
Pythonで方程式の最大値を見つけるプログラム
2D平面上の座標点を含むpointsという配列があるとします。これらは、x値で並べ替えられます。ここで、points [i] =(x_i、y_i)なので、すべての1 <=i
-
Pythonで同種の部分文字列の数をカウントするプログラム
文字列sがあるとすると、sの同種の部分文字列の数を見つける必要があります。答えは非常に大きい可能性があるため、10 ^ 9+7を法として答えを返します。文字列のすべての文字が同じである場合、文字列は同種であると言われます。 したがって、入力がs =xyyzzzxxのようである場合、同種の部分文字列はのようにリストされるため、出力は13になります。 1.「x」が3回表示されます。 「xx」は1回表示されます。 3.「y」が2回表示されます。 「yy」は1回表示されます。 5.「z」は3回表示されます。 「zz」は2回表示されます。 「zzz」は1回表示
-
Pythonでバッグ内のボールの最小制限を見つけるプログラム
配列numsがあり、i番目の要素がnums[i]個のボールを含むバッグを示しているとします。 mxという別の値もあります。最大mx回で次の操作を実行できます- ボールのバッグを選択し、少なくとも1つのボールが入った2つの新しいバッグに分割します。 ここでのペナルティは、バッグ内のボールの最大数です。 手術後のペナルティを最小限に抑える必要があります。したがって、最後に、操作を実行した後、可能な限り最小限のペナルティを見つける必要があります。 したがって、入力がnums =[4,8,16,4]、mx =4の場合、次の操作を実行できるため、出力は4になります。最初は[4,8,1
-
Pythonの数字で最大k個の隣接するスワップの後に可能な最小の整数を見つけるプログラム
非常に大きな整数を表すnumという文字列があり、別の値kもあるとします。値の隣接する2桁は、最大でk回交換できます。取得できる最小値を見つける必要があります。 したがって、入力がnum =5432 k =4の場合、最初の数値は5432であるため、出力は2453になります。最初のフェーズの後は4532、次に4523、次に4253、最後のフェーズは2453になります。 これを解決するために、次の手順に従います min_num:=numの数字を並べ替える i:=0、to_find:=0 0およびi
-
Pythonで別の配列のサブ配列を連結して配列を生成するプログラム
0の場合、(i-1)番目のサブ配列が前に表示されます。 numsのi番目のサブ配列。 したがって、入力がグループのようなものである場合=[[2、-2、-2]、[4、-3,0]] nums =[1、-1,0,2、-2、-2,4、- 3,0]の場合、配列group [0]はnumsのインデックス3から5まで存在し、group [1]はnumsのインデックス6から8まで存在するため、出力はtrueになります。 これを解決するには、次の手順に従います- i:=0 グループ内のgrpごとに、実行します 範囲iからnums-1のサイズのjの場合、実行します numsのサブ配列
-
AmalがPythonでストーンゲームに勝つことができるかどうかをチェックするプログラム
AmalとBimalの2人のプレーヤーがいて、彼らがゲームをプレイしていて、Amalが最初に開始するとします。最初は、山の中にn個の異なる石があります。各プレイヤーのターンで、彼は山から任意の平方数(ゼロ以外)の石を取り除くことからなる動きをします。また、1人のプレーヤーが移動できない場合、そのプレーヤーはゲームに負けます。したがって、nがある場合、Amalがゲームに勝つことができるかどうかを確認する必要があります。 したがって、入力がn =21の場合、出力はTrueになります。これは、最初にAmalが16を取り、次にBimalが4を取り、次にAmalが1を取り、ゲームに勝つためです。 こ
-
Pythonでサービスセンターの最適な位置を見つけるためのプログラム
いくつかの家が配置されている座標点のリストを含む位置のリストがあるとします。 (xc、yc)にサービスセンターを作成し、任意のポイントから(xc、yc)までのユークリッド距離の合計が最小になるようにする場合。したがって、最小距離の合計を見つける必要があります。 したがって、入力がpositions =[(10,11)、(11,10)、(11,12)、(12,11)]のような場合、出力は4.0になります。 これを解決するには、次の手順に従います- numIter:=50 関数total()を定義します。これにはcx、cy、positionsが必要です 合計:=0.0
-
Pythonで重複しないサブストリングの最大数を見つけるプログラム
小文字のみの文字列sがあるとすると、次のルールを満たすsの空でない部分文字列の最大数を見つける必要があります 部分文字列は重複していません 特定の文字chを含むサブストリングには、chのすべての出現箇所も含まれている必要があります。 これらの2つの条件を満たすサブストリングの最大数を見つける必要があります。同じ数の部分文字列を持つそのようなソリューションが複数ある場合は、最小の全長でそれを返します。 したがって、入力がs =pqstpqqprrrの場合、条件を満たす可能性のあるすべてのサブ文字列は[pqstpqqprrr、 pqstpqqpであるため、出力は[s、 t、rr
-
Pythonですべてのボールを各ボックスに移動するための最小操作数を見つけるプログラム
boxsというバイナリ文字列があるとします。boxes[i]は「0」はi番目のボックスが空であることを示し、「1」は1つのボールが含まれていることを示します。これで、1回の操作で、1つのボールをボックスから隣接するボックスに移動できます。そうすると、一部のボックスに複数のボールが入る場合があります。サイズnの配列回答を見つける必要があります。ここで、answer [i]は、すべてのボールをi番目のボックスに移動するために必要な操作の最小数です。 したがって、入力がboxs =1101のような場合、出力は[4、3、4、5]になります。 すべてのボールを最初のボックスに入れるには、box2
-
Pythonでターゲット配列を形成するためのサブ配列の最小増分数を見つけるプログラム
正の値を持つtargetという配列があるとします。ここで、すべてゼロの同じサイズの配列イニシャルについて考えてみます。この操作を行う場合、イニシャルからターゲット配列を生成するために必要な最小数の操作を見つける必要があります:(イニシャルから任意のサブ配列を選択し、各値を1ずつインクリメントします。) したがって、入力がtarget =[2,3,4,3,2]のようである場合、最初は配列が[0,0,0,0,0]であったため、出力は4になります。 4そしてそれを1増やすので、配列は[1,1,1,1,1]になり、次にインデックス0から4までを選択して[2,2,2,2,2]にし、から要素を選択します
-
Pythonで乗算演算を実行して最大スコアを見つけるプログラム
=m)。配列は1インデックスです。これで、初期スコアは0になります。正確にm個の操作を実行したいと思います。 i番目の操作(1インデックス)では、- 数値の最初または最後からxから1つの値を選択します。 乗数[i]*xをスコアに追加します。 配列番号からxを削除します。 m回の操作を行った後に最大スコアを見つける必要があります。 したがって、入力がnums =[5,10,15]、multipliers =[5,3,2]の場合、15を取り、5を掛けて5 * 15 =75を得ることができるため、出力は115になります。 、次に10 * 3 =30、つまり合計は75 + 3
-
Pythonで最大k文字を削除した後、ランレングスエンコーディングの最小長を見つけるプログラム
文字列sと別の値kがあるとします。 sのランレングスエンコードバージョンの長さが最小になるように、sから最大k文字を削除できます。ご存知のとおり、ランレングスエンコーディングは、連続する同一の文字(2回以上)を文字の連結と文字数を示す数字に置き換える文字列圧縮方式です。たとえば、文字列「xxyzzz」がある場合、「xx」を「x2」に置き換え、「zzz」を「z3」に置き換えます。したがって、圧縮された文字列は「x2yz3」になります。したがって、この問題では、最大k個の値を削除した後、ランレングスでエンコードされたバージョンのsの最小長を見つける必要があります。 したがって、入力がs =xxx
-
Pythonで可能なすべての有効なパスから最大スコアを見つけるプログラム
2つの配列nums1とnums2があるとします。有効なパスは次のように定義されます- トラバースするnums1またはnums2を選択します(インデックス0から)。 配列を左から右にトラバースします。 ここで、nums1とnums2に存在する値を移動している場合は、他の配列へのパスを変更できます。ここで、スコアは有効なパスの一意の値の合計です。考えられるすべての有効なパスから取得できる最大スコアを見つける必要があります。答えが大きすぎる場合は、10 ^ 9+7を法とする結果を返します。 したがって、入力がnums1 =[3,5,6,9,11] nums2 =[5,7,9,10
-
Pythonで最長の素晴らしい部分文字列を見つけるプログラム
数値文字列sがあるとします。私たちが知っているように、素晴らしい部分文字列はsの空でない部分文字列であり、回文にするために任意の数のスワップを行うことができます。 sの最大長の素晴らしい部分文字列の長さを見つける必要があります。 したがって、入力がs =4353526のような場合、 35352が最長の素晴らしい部分文字列であるため、出力は5になります。 「35253」回文を作成できます。 これを解決するには、次の手順に従います- n:=0 pos_map:=キー0を含み、対応する値がsのサイズであるマップ max_len:=1 s-1から0の範囲サイズのiの場合
-
Pythonでスティックをカットするための最小コストを見つけるためのプログラム
値nとcutsという配列があるとします。長さn単位の木の棒があると考えてください。スティックには0からnまでのラベルが付いています。ここで、cuts [i]は、カットできる位置を表します。順番にカットする必要がありますが、カットの順番は自由に変更できます。ここで、1カットのコストはカットするスティックのサイズであり、合計コストはすべてのカットのコストの合計です。削減の最小総コストを見つける必要があります。 したがって、入力がn =7、cuts =[5,1,4,3]の場合、出力は16になります。これは、[3,5,1,4]のように注文すると、最初に長さ7から3なので、コストは7です。次に、長さ3
-
PythonでN個のオレンジを食べる最小日数を見つけるプログラム
数nがあるとします。したがって、キッチンにn個のオレンジがあり、次のルールを維持しながら、これらのオレンジのいくつかを毎日食べていると考えてください。1.オレンジを1つ食べる。 2. nが偶数の場合は、n/2個のオレンジを食べます。 3. nが3で割り切れる場合、2 *(n / 3)個のオレンジを食べることができます。毎日1つのオプションしか選択できません。オレンジをn個食べるための最小日数を見つける必要があります。 したがって、入力がn =10の場合、出力は4になります。 1日目にオレンジを1つ、10-1=9を食べます。 2日目に6個のオレンジを食べます。9-2*(9/3)=9