人物1をチェックするプログラムは、Pythonで最大スコアを取得するかどうかによってキャンディーゲームに勝つことができます
したがって、入力がnums =[1、1、2、3、50]の場合、出力はTrueになります。これは、人1がキャンディーを1つ取ることができ、他のプレーヤーがキャンディーを1つ、2つ、または3つ取る必要があるためです。いずれにせよ、人1は50の値のキャンディーを取ることができます。
これを解決するには、次の手順に従います-
-
n:=numsのサイズ
-
table:=3つの0を持つ配列。
-
n − 1から0の範囲のiの場合、1ずつ減らします。
-
利益:=−inf
-
sum_val:=0
-
iからi+3およびnの最小値までの範囲のjについては、次のようにします
-
sum_val:=sum_val + nums [j]
-
利益:=利益の最大値と(sum_val − table [j − i])
-
-
set table:=3つの値を持つリスト[profit、table [0]、table [1]]
-
-
table [0]> 0の場合はtrueを返し、それ以外の場合はfalseを返します
理解を深めるために、次の実装を見てみましょう-
例
import math class Solution: def solve(self, nums): n = len(nums) table = [0, 0, 0] for i in range(n − 1, −1, −1): profit = −math.inf sum_val = 0 for j in range(i, min(i + 3, n)): sum_val += nums[j] profit = max(profit, sum_val − table[j − i]) table[:] = [profit, table[0], table[1]] return table[0] > 0 ob = Solution() nums = [1, 1, 2, 3, 50] print(ob.solve(nums))
入力
[1, 1, 2, 3, 50]
出力
True
-
Pythonの容量内でさまざまなアイテムを取得することで取得できる最大量を見つけるためのプログラム
同じ長さの重みと値と呼ばれる2つのリストと、容量kと呼ばれる別の数があるとします。ここで、weights[i]とvalues[i]は、i番目のアイテムの重みと値を示しています。これで、最大でk個の容量の重みを取得でき、各アイテムの最大で1つのコピーしか取得できないため、取得できる値の最大量を見つける必要があります。 したがって、入力が重み=[2、3、4]、値=[2、6、4]、容量=6のような場合、出力は8になります これを解決するには、次の手順に従います- n:=おもりのサイズ dp:=サイズ容量x nの行列で、0で埋めます 0からnの範囲のiについては、 0から容量までの範囲の
-
文字列が空かどうかをチェックするPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 文字列を入力したら、文字列が空かどうかを確認する必要があります。 Python文字列は本質的に不変であるため、操作を実行するときは、文字列を処理するときに注意が必要です。 ここでは、上記の問題ステートメントを解決するための2つのアプローチについて説明します- len()メソッドを使用します。 等式演算子を使用します。 アプローチ1:len()メソッドを使用する 例 test_str1 = "" test_str2 = "@@@" if(l