-
Pythonですべてを購入するための最小コストを見つけるためのプログラム
0、1、2、…、N-1とマークされたN個のアイテムがあるとします。次に、セットと呼ばれるサイズSの2Dリストが与えられます。ここでは、価格セット[i、2]のi番目のセットを購入でき、セット[i、0]からセット[i、1]までのすべてのアイテムを受け取ります。また、削除と呼ばれるサイズNのリストがあり、価格の削除のためにi番目の要素の1つのインスタンスを破棄できます[i]。したがって、0からN-1までのすべての要素の1つを正確に購入するための最小コストを見つける必要があります。これができない場合、結果は-1になります。 So, if the input is like sets = [  
-
Pythonのコンテストで達成可能なポイントを見つけるためのプログラム
複数の問題があるプログラミングコンテストに参加しているが、1つの問題を解決するとコンテストが終了するとします。ここで、ポイントと呼ばれる同じ長さの数の2つのリストとチャンスがあるとします。それを説明するために、ここでi番目の問題については、points[i]ポイントでそれを解決する可能性[i]パーセントの可能性があります。また、試行できる問題の数を表す別の値kがあります。同じ問題を2回試みることはできません。 最適な戦略を立てる場合、コンテストで獲得できるポイント数の期待値を見つける必要があります。これは、最も近い整数に丸められます。 i番目の問題を試行することの価値はpoints[i]*チ
-
Pythonで方程式を修正するために実行する修正の数を見つけるプログラム
x + y=zの形式の方程式を表す文字列sがあるとします。方程式が真になるように、sに追加する必要のある最小桁数を見つける必要があります。 したがって、入力がs =2 + 6 =7の場合、出力は2になります。 「1」と「2」を挿入することで、方程式を「21 + 6=27」に変えることができます。したがって、必要な修正の総数は2です。 これを解決するには、次の手順に従います- sを「+」文字に基づいて分割し、左側をAに、右側を残りに配置します 残りを「=」文字に基づいて部分に分割し、左側をBに、右側をCに配置します dp(Aのサイズ-1、Bのサイズ-1、Cのサイズ-1、0
-
Pythonの加重グラフから可能な最小コストを見つけるためのプログラム
無向グラフの表現であるエッジと呼ばれる整数の2Dリストがあるとします。入力のすべての行はエッジ[u、v、w]を表します。これは、ノードuとvが接続されており、エッジの重みがwであることを意味します。グラフは、0からn-1までのn個のノードで構成されています。 パスのコストは、ここでは、エッジの数とパス内の任意のエッジの最大重みの積として定義されます。ノード0からノードn-1までの可能な最小コストを見つける必要があります。そのようなパスが存在しない場合は、答えを-1と宣言します。 So, if the input is like edges = [ [0, 2, 10
-
Pythonでリストの最大の最終的な力を見つけるためのプログラム
リストがあり、リストの累乗がすべてのインデックスの(index + 1)*value_at_indexの合計によって定義されているとします。または、次のように表すこともできます- $$ \ displaystyle \ sum \ Limits_ {i =0} ^ {n-1}(i + 1)\ times list [i] $$ これで、N個の正の整数を持つリストnumができました。リスト内の任意の特異値を選択し、それを任意の位置に移動(スワップではなく)したり、リストの最初または最後に移動したりできます。ポジションをまったく動かさないことも選択できます。リストの可能な限り最大の最終的な力
-
Pythonで1からkまでのすべての値で割り切れる最小数xの後続ゼロの数をカウントするプログラム
数kがあるとします。ここで、1からkまでのすべての値が均等に分割される最小の正の整数値xを考えます。言い換えると、xが1からkまでのすべての数値で割り切れる最小値xを考えます。 xの後続ゼロの数を見つける必要があります。 したがって、入力がk =6のような場合、出力は0になります。ここでの最小のxは60であり、60は1、2、3、4、5、および6を使用して除算できます。末尾のゼロは1つだけです。 60。 これを解決するには、次の手順に従います- res:=0 x:=1 x * 5 <=k、do res:=res + 1 x:=x * 5
-
Pythonでリストを増加しないリストに変換するために必要な操作の数を見つけるためのプログラム
numsという番号のリストがあるとします。ここで、2つの連続する値を取得し、それらの合計を取得して1つの値にマージする操作について考えてみましょう。リストが増加しないようにするために必要な操作の最小数を見つける必要があります。 したがって、入力がnums =[2、6、4、10、2]のような場合、[2、6]をマージして[8、4、10、2]を取得し、次に[8、4、10、2]を取得できるため、出力は2になります。 [8、4]をマージして[12、10、2]を取得します。 これを解決するには、次の手順に従います- numsが空の場合、 0を返す numsの最後に-infを挿入し
-
Pythonの文字列のすべての部分文字列の個別の文字数をカウントするプログラム
小文字の文字列sがあるとすると、sのすべての部分文字列で異なる文字数の合計を見つける必要があります。答えが非常に大きい場合は、結果mod 10 ^ 9+7を返します。 したがって、入力がs =xxyのような場合、サブストリングとそのカウントは-であるため、出力は6になります。 x:1 x:1 「y」:1 xx:0( xは区別されないため) 「xy」:2 xxy:1( x は区別されないため) これを解決するには、次の手順に従います- m:=10 ^ 9 + 7 prev_seen:=新しい空のマップ ans:=0
-
Pythonで左上と右下のセルを分割するために必要な壁の数を数えるプログラム
0が空のセルを表し、1が壁を表す2次元バイナリ行列があるとします。左上のセルと右下のセルの間にパスがないように、壁になる必要のあるセルの最小数を見つける必要があります。左上のセルと右下のセルに壁を配置することはできません。斜めにではなく、左右、上下にしか動かせません。 したがって、入力が次のような場合 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 その場合、出力は2になります 0 1 0 0 0 1 0 0 0 1 1 0
-
人をチェックするプログラムは、Pythonで火災を回避するかどうかにかかわらず、左上または右下のセルに到達できます
以下のようないくつかの異なる値を持つ2D行列があるとします- 空のセルの場合は0 1人に1人 火の場合は2 壁の場合は3 ここで、人が1人だけで、各ターンで火が4方向すべて(上、下、左、右)に拡大するとしますが、火は壁を越えて拡大することはできません。人が左上隅、右下隅、またはマトリックスのいずれかに移動できるかどうかを確認する必要があります。各ターンで、人が最初に移動し、次に火が拡大することを覚えておく必要があります。人が火事と同時に標的細胞のいずれかに到達した場合、彼は安全です。したがって、人が独房に行き、同じ順番で同じ独房に火が広がった場合でも、その人は生き
-
Pythonでyの前にすべてのxを作成するために必要なフリッピングの数をカウントするプログラム
文字xとyを含む小文字の文字列sがあるとします。ここで、単一のxをyに、またはその逆に変更する操作について考えてみます。すべてのxがすべてのyの前に来るように設定するために、その操作を実行するために必要な最小回数を見つける必要があります。 したがって、入力がs =yxyyyyxyxxのような場合、出力は4になります。 これを解決するには、次の手順に従います- y_left:=0 x_right:=sの「x」の数、res:=sの「x」の数 sの各項目について、実行します アイテムが「x」と同じ場合、 x_right:=x_right − 1 それ以
-
Pythonで他の2つの文字列を使用して最終的な文字列を形成できるかどうかを確認するプログラム
2つの文字列s、t、および別の文字列rがあるとします。文字をsとtの順にマージして、rを取得する方法があるかどうかを確認する必要があります。 したがって、入力がs =xyz t =mno r =xymnozの場合、xyzとmnoをインターリーブすることでxymnozを形成できるため、出力はTrueになります。 これを解決するには、次の手順に従います- 関数solve()を定義します。これにはs、t、rが必要です s、t、rが空の場合、 Trueを返す rが空の場合、 Falseを返す sが空の場合、 tがrと同じ場合はtrueを返し、そ
-
Pythonで隣接するペアの合計が完全な二乗である順列の数をカウントするプログラム
numsという番号のリストがあるとします。隣接する値のすべてのペアの合計が完全な二乗になるように、numの順列の数を見つける必要があります。 A[i]がB[i]と同じではないインデックスiがある場合、2つの順列AとBは一意です。 したがって、入力がnums =[2、9、7]の場合、[2、7、9]と[9、7、2] があるため、出力は2になります。 これを解決するには、次の手順に従います- res:=0 関数util()を定義します。これには私がかかります i + 1がnumsのサイズと同じである場合、 res:=res + 1 戻る 訪問した:=新
-
Pythonで最初のプレイヤーが他のプレイヤーよりも多くのキャンディーを取ることができるかどうかを確認するプログラム
キャンディーと呼ばれる番号のリストがあり、2人が最も多くのキャンディーを集めるために競争しているとします。ここでは、レースはターンベースで、人1が最初に開始し、各ターンで、前または後ろからキャンディーを拾うことができます。人1が他の人よりも多くのキャンディーを集めることができるかどうかを確認する必要があります。 したがって、入力がキャンディー=[1、4、3、8]のようである場合、出力はTrueになります。これは、人1が最初のラウンドで8個のキャンディーを取ることができ、2人目が1または3を選ぶかどうかに関係なく、人1残りのキャンディーを取ることで勝つことができます。 これを解決するには、次
-
人物1をチェックするプログラムは、Pythonで最大スコアを取得するかどうかによってキャンディーゲームに勝つことができます
2人のプレーヤーがゲームをプレイしているとします。いくつかのキャンディーが一列に並んでいて、人1には、各キャンディーのポイント値を表すnumsと呼ばれる数字のリストが与えられます。各人の順番で、列の先頭から1つ、2つ、または3つのキャンディーを選び、リストから削除して、ポイントの合計をスコアに追加することができます。このゲームは、キャンディーがすべて削除され、スコアの高い方が勝者となると終了します。人1がこのゲームに勝つことができるかどうかを確認する必要があります。 したがって、入力がnums =[1、1、2、3、50]の場合、出力はTrueになります。これは、人1がキャンディーを1つ取るこ
-
Pythonの特定のマトリックスから収集できるコインの最大量を見つけるためのプログラム
行列[r、c]がそのセル内のコインの数を表す2D行列があるとします。どの位置からでも始められ、4つの方向(斜めではなく上、下、左、右)のいずれかを動かしてコインを集めたいと思います。セルに移動すると、コインが収集され、そのセルの値は0になります。0コインのセルにアクセスすることはできません。収集できるコインの最大数を見つける必要があります。 したがって、入力が次のような場合 2 4 3 3 6 0 2 0 12 3 を取ることができるので、出力は18になります。 これを解決するには、次の手順に従います- 行列が空の場合、
-
左上から右下のセルから選択してPythonで返すことができるコインの数を見つけるプログラム
3つの可能な値を持つ2D行列があるとします- 空のセルの場合は0。 コインの場合は1。 壁の場合は-1。 左上のセルから始めて、右または下の方向にのみ移動して右下のセルに到達することにより、取得できるコインの最大数を見つける必要があります。次に、上方向または左方向に移動するだけで、左上のセルに戻ります。コインを受け取ると、セルの値は0になります。右下のセルに到達できない場合は、0を返します。 したがって、入力が次のような場合 0 1 1 1 1 1 -1 1 1 0 1 1 その場合、出力は8に
-
Pythonで数値文字列を分割して値のリストを作成できる方法の数をカウントするプログラム
文字列sがあるとします。 sには0〜9の数字が含まれており、別の数字kもあります。 sを[1、k]からの数のリストとして表すことができるさまざまな方法の数を見つける必要があります。答えが非常に大きい場合は、結果mod 10 ^ 9+7を返します。 したがって、入力がs =3456 k =500の場合、出力は7になります。これは、sを[3、4、5、6]、[34、5、6]、[3、 4、56]、[3、45、6]、[34、56]、[345、6]、[3、456] これを解決するには、次の手順に従います- m:=10 ^ 9 + 7 N:=sのサイズ dp:=サイズのリスト(N
-
Pythonの特定の行列からいくつかの異なる島の形状を見つけるプログラム
2次元のバイナリ行列があるとすると、与えられた行列内の個別の島の数を見つける必要があります。ここで、1は土地を表し、0は水を表します。したがって、島は1のセットであり、その周囲は水に囲まれています。ここでは、形が異なる場合、2つの島がユニークです。 したがって、入力が次のような場合 1 0 0 0 0 1 0 1 0 1 0 1 1 0 1 0 0 1 0 0 1 0 0 0 0 1 1 0 1 1 その場合、出力は4になります(異なる島は
-
サイズkPythonの1からnまでのk番目の辞書式順序を見つけるプログラム
2つの値nとkがあるとします。ここで、1からn [1、2、...、n]の範囲の数値のリストを検討し、このリストのすべての順列を辞書式順序で生成します。たとえば、n =4の場合、[1234、1243、1324、1342、1423、1432、2134、2143、2314、2341、2413、2431、3124、3142、3214、3241、3412、3421、4123、4132、 4213、4231、4312、4321]。この順列シーケンスのk番目の値を文字列として見つける必要があります。 したがって、入力がn =4 k =5の場合、出力は「1432」になります これを解決するには、次の手順に