-
Pythonでスターグラフの中心を見つけるプログラム
1からnまでのラベルが付けられたn個のノードを持つ1つの無向スターグラフがあるとします。ご存知のように、スターグラフは、1つの中心ノードがあり、中心ノードを他のすべてのノードに接続する正確にn-1個のエッジがあるグラフです。与えられたスターグラフの中心を見つける必要があります。 したがって、入力が次のような場合 3が中央にあるため、出力は3になります。 これを解決するには、次の手順に従います- 見た:=新しいセット グラフの各エッジ(u、v)について、実行します uが表示されている場合は、 uを返す vが表示されている場合は、 vを返す
-
Pythonで平均待機時間を見つけるプログラム
配列customersがあり、customers [i] =ペア[arrival_i、time_i]を保持しているとします。ここで、arrival_iはi番目の顧客の到着時刻です。また、到着時間は短いものから高いものへと並べ替えられます。また、time_iは、i番目の顧客の注文を準備するために必要な時間です。これで、顧客が到着すると注文を出し、料理人がアイドル状態のときにその注文だけが準備を開始します。料理人は一度に複数の顧客のために料理を準備しません。そして、彼は彼らが注文された順番で準備します。すべての顧客の平均待機時間を見つける必要があります。 したがって、入力がcustomers =
-
Pythonで最大平均合格率を見つけるプログラム
classes [i]が[pass_i、total_i]を表すクラスのリストがあるとします。それぞれ、i番目のクラスの試験に合格した学生の数とi番目のクラスの学生の総数を表します。また、別の価値もあります。これは、割り当てられたクラスの試験に合格することが保証されている優秀な学生の数が多いことを示しています。すべてのクラスで合格した生徒の平均数を最大化する方法で、追加の各生徒をクラスに割り当てる必要があります。合格するクラスの生徒数をクラスの生徒の総数で割って決定されるクラスの合格率。また、平均合格率は、すべてのクラスの合格率の合計をクラス数で割ったものです。追加の学生を割り当てた後、可能な限
-
Pythonで変更した後に最大のバイナリ文字列を見つけるプログラム
バイナリ文字列があるとします。次の各操作は何度でも適用できます- 番号に部分文字列「00」が含まれている場合は、「10」に置き換えることができます。 番号に部分文字列「10」が含まれている場合は、「01」に置き換えることができます。 次に、任意の数の操作の後に取得できる最大のバイナリ(数値に基づく)文字列を見つける必要があります。 111011。 これを解決するには、次の手順に従います- 長さ:=sのサイズ ゼロ:=sの0の数 ゼロが2未満の場合、 return s s:=sの左側からすべての「1」を削除します Leading_ones:=長さ-sのサイズ
-
PythonでReorderedPowerof2を見つけるプログラム
正の整数Nがあるとすると、先頭の数字がゼロ以外になるように、任意の順序(元の順序を含む)で数字を並べ替えます。結果の数値が2の累乗になるような方法でこれを実行できるかどうかを確認する必要があります。 したがって、入力がN =812のような場合、出力はTrueになります これを解決するには、次の手順に従います- i:=1 i <=1000000000、実行 s:=文字列としてのi s:=sの文字を並べ替える 文字列としてのt:=n t:=tの文字を並べ替える sがtと同じ場合、 Trueを返す i:=i * 2 Fa
-
Pythonで食べたリンゴの最大数を見つけるプログラム
同じ長さnの日とリンゴという2つの配列があるとします。 n日間連続して毎日リンゴを育てる特別な種類のリンゴの木があります。 i日目はリンゴ[i]の数のリンゴが育ち、それは数日[i]日後に腐敗するので、i日+日[i]のリンゴは腐って食べられなくなると言えます。ある日。 apples [i] =0、days [i] =0の場合、i日目に、リンゴの木はリンゴを成長させていないことを示します。私たちは1日にせいぜい1つのリンゴを取ることができます。 (最初のn日後も食べ続けることができます)。ここでは、食べられるリンゴの最大数を見つける必要があります。 したがって、入力がapples =[1,2,3
-
Pythonでちょうど2つのアイテムでおいしい食事を数えるプログラム
deli [i]がi番目の食品の美味しさである一連のデリがあるとすると、このリストから作成できるさまざまなおいしい食事の数を見つける必要があります。答えが大きすぎる場合は、10 ^ 9 + 7を法とする結果を返します。ここで、良い食事とは、2の累乗である美味しさの合計を持つ正確に2つの異なる食品を含む食事を意味します。おいしい食事を作るために、任意の2つの異なる食品を選択できます。 したがって、入力がdeli =[1,7,3,6,5]のようである場合、ペア(1,3)、(1,7)、および(3,5)を作成できるため、出力は3になります。合計は2の累乗です。 これを解決するには、次の手順に従いま
-
Pythonの蛇と梯子ゲームの最小の動きを見つけるためのプログラム
蛇と梯子のゲームをしているとしましょう。サイコロを振って好きな数だけ振ることができるという条件があります。位置0から開始し、目的地は位置100で、サイコロを数回転がして目的地に到達します。ボード上の蛇と梯子の位置が提供されている場合、目的地に到達するために必要なダイスロールの最小数を見つける必要があります。蛇と梯子の配列は、ボード内の蛇と梯子の位置を表し、配列には、ボード上の蛇または梯子の開始値と終了値が含まれています。 したがって、入力がラダー=[(11、40)、(37,67)、(47、73)、(15、72)]のようである場合、ヘビ=[(90、12)、(98、31)、 (85、23)、(7
-
Pythonでプリムのアルゴリズムを使用してMSTを見つけるプログラム
グラフが与えられ、そのグラフから「最小スパニングツリー」(MST)を見つけるように求められたとします。グラフのMSTは、すべての頂点が存在して接続され、サブセットにサイクルが存在しない加重グラフのサブセットです。 MSTの合計エッジ重みがグラフから可能な限り最小であるため、MSTは最小と呼ばれます。したがって、ここではプリムのMSTアルゴリズムを使用して、特定のグラフからMSTの合計エッジウェイトを見つけます。 したがって、入力が次のような場合 、頂点の数(n)は4で、開始頂点(s)=3の場合、出力は14になります。 このグラフのMSTは次のようになります- このMSTの合
-
Pythonで配列を3つのサブ配列に分割する方法の数を見つけるためのプログラム
numsという配列があるとすると、この配列numsを分割するための適切な方法をいくつか見つける必要があります。答えが大きすぎる可能性があるため、10 ^ 9 + 7を法とする結果を返します。ここで、配列を左から右にそれぞれ3つの空でない連続したサブ配列に分割し、その合計が左側の要素は中央部分の要素の合計以下であり、中央部分の要素の合計は右側の要素の合計以下です。 したがって、入力がnums =[2,3,3,3,7,1]のようである場合、分割には3つの異なる方法があるため、出力は3になります。 [2]、[3]、[3,3,7,1] [2]、[3,3]、[3,7,1] [2,3]、[3
-
グラフ内の最大のクリークの最小サイズを見つけるプログラム(Python)
グラフが与えられ、グラフ内の最大のクリークの最小サイズを見つけるように求められたとします。グラフのクリークは、頂点のすべてのペアが隣接している、つまり頂点のすべてのペアの間にエッジが存在するグラフのサブセットです。グラフ内で最大のクリークを見つけることは多項式時間では不可能であるため、小さなグラフのノードとエッジの数を考えると、グラフ内の最大のクリークを見つける必要があります。 したがって、入力がノード=4、エッジ=4のような場合。その場合、出力は2になります。 上のグラフでは、クリークの最大サイズは2です。 これを解決するには、次の手順に従います- 関数helper()を定義し
-
ペナルティが最小のグラフ内の2つの頂点間のパスを見つけるプログラム(Python)
無向の重み付きグラフが与えられ、ノードaからノードbへのペナルティを最小限に抑えたパスを見つけるように求められたとします。パスのペナルティは、パス内のすべてのエッジの重みのビットごとのORです。したがって、このような「最小ペナルティ」パスを見つける必要があり、2つのノード間にパスが存在しない場合は、-1を返します。 したがって、入力が次のような場合 開始(s)=1、終了(e)=3;その場合、出力は15になります。 3で、パスのコストは(10 OR 5)=15です。 これを解決するには、次の手順に従います- 関数helper()を定義します。これにはG、s、eが必要です v:=新
-
最小値の頂点から最大値の頂点までの最小コストパスを見つけるプログラム(Python)
Cのパスがあるとします。AからBへの移動コストは10で、BからCへの移動コストは20です。 。AからCへの移動コストは、(AからBへの移動コスト)+(BからCへの移動コストとノードBへの累積移動コストの差)になります。したがって、これは10 +(20-10)=20に変換されます。最初のノードから最後のノード(最小値のノードから最大値のノード)内の可能な最小移動値を見つける必要があります。与えられたグラフ。 したがって、入力が次のような場合 その場合、出力は15になります。 4で、パスのコストは10 +(15-10)=15です。それ以外の場合、パスのコストは20になります。 これを解
-
Pythonの特定のグラフで特別なタイプのサブグラフを見つけるプログラム
頭と足という名前の2つのタイプの頂点を持つ特別なタイプのグラフがあるとします。グラフにはヘッドが1つだけあり、ヘッドを各足に接続するk個のエッジがあります。したがって、無向、無加重のグラフが与えられた場合、グラフの頂点が互いに素なサブグラフで、これらの特殊なタイプのグラフを見つける必要があります。共通の頂点がない場合、2つのグラフは頂点が互いに素であると言われます。 したがって、入力が次のような場合 ノード数(n)=5、フィート数(t)=2の場合、出力は5になります。 与えられたグラフの頂点が互いに素なサブグラフであるそのような特別なグラフが5つある可能性があります。 これを解決
-
Pythonですべての文字を配信するための最小パスを見つけるためのプログラム
n個の都市があり、それらがn-1本の道路に接続されているとします。ある都市は他のどの都市からでも訪れることができます。現在、都市の郵便システムは毎日k文字を配信しています。手紙の宛先は、k個の異なる都市のいずれでもかまいません。郵便局員は毎日すべての手紙を自分の住所に届けなければなりません。私たちは、すべての手紙を届けるために労働者が移動しなければならない最小距離を見つけなければなりません。労働者は任意の都市から始めることができます。 したがって、入力が次のような場合 手紙は都市(delv)1、2、4で配達されなければなりません。その場合、出力は4になります。 1。総費用は1+3 =
-
Pythonで部分文字列を削除して最大スコアをカウントするプログラム
文字列sと2つの値xとyがあるとします。与えられた2種類の操作を何度でも実行できます。 サブストリング「ab」が存在する場合は、それを削除することでxポイントを獲得できます。 サブストリング「ba」が存在する場合は、それを削除することでyポイントを獲得できます。 上記の操作をsに適用した後に獲得できる最大のポイントを見つける必要があります。 したがって、入力がs =cbbaacdeabb x =4 y =5の場合、最初の文字列は cbbaacdeabbであるため、出力は14になります。次に、 cbbaacde(ab)bを削除して4を取得し、文字列は cbbaacdeb 、
-
Pythonのすべての頂点の中でグラフ内の最小コストの合計を見つけるプログラム
n個の頂点とm個のエッジを持つ重み付きグラフがあるとします。エッジの重みは2の累乗です。グラフ内の任意の頂点から任意の頂点に到達でき、移動コストはグラフ内のすべてのエッジの重みを加算したものになります。頂点の各ペア間の最小コストの合計を決定する必要があります。 したがって、入力が次のような場合 頂点の数(n)=6;その場合、出力は2696になります。 すべての距離の合計は2696です。 これを解決するには、次の手順に従います- 関数par_finder()を定義します。これにはi、parが必要です par [i]が-1と同じ場合、 私を返す res:=par_finde
-
Pythonのショートカットで2つの都市間の長さを調べるプログラム
n個の都市があり、都市が2種類の道路で接続されているとします。高速道路とショートカット。現在、地図があり、高速道路のみが地図上にあり、すべてのショートカットはありません。都市の輸送部門は、高速道路とショートカットを利用して都市を接続する輸送を開始したいと考えています。 2つの都市の間に高速道路がない場合、2つの都市の間に近道があることを私たちは知っています。ここでのタスクは、開始都市から他のすべての都市へのショートカットの観点から最小距離を見つけることです。 したがって、入力が次のような場合 開始頂点が1の場合、出力は312になります。 2になり、コストは3になります。 同様に、
-
Pythonで辞書式順序で最大の有効なシーケンスを構築するプログラム
数nがあるとすると、次のすべてのルールを満たすシーケンスを見つける必要があります- 1はシーケンスで1回発生します。 2からnまでの各数字は、シーケンス内で2回出現します。 2からnの範囲のすべてのiについて、iの2つの出現間の距離は正確にiです。 シーケンス上の2つの数値a[i]とa[j]の間の距離は、| j--i|です。字句的に最大のシーケンスを見つける必要があります。 したがって、入力がn =4の場合、出力は[4、2、3、2、4、3、1]になります。 これを解決するには、次の手順に従います- 関数backtrack()を定義します。これには、elems、re
-
Pythonのアイテムリストのすべての順列のすべての特別な値の平均をカウントするプログラム
次のアルゴリズムでSの値を計算できる要素のリストがあるとします。 while size of L > 1 is non-zero, do a := L[0] b := L[1] remove L[1] L[0] := a + b + a*b return L[0] mod (10^9 + 7) ここでは、Lのすべての可能な組み合わせから計算されたすべてのS値の平均を見つける必要があります。 したがって、入力がL =[5,3,4]の場合、出力は199になります。これは、Lのすべての順