Pythonで有料で株を売買することで得られる最大の利益を見つけるためのプログラム?
会社の株価の時系列のリストがあり、1回の売り取引の取引手数料もあるとします。その株を何度でも売買することで得られる最大の利益を見つけなければなりません。販売する前に購入する必要があります。
したがって、入力が価格=[2、10、4、8]手数料=3の場合、出力は6になります。これは、2で購入し、10で販売し、手数料3が発生するため、利益は5になります。 。次に、4で購入し、8で販売し、3の手数料が発生するため、利益1、合計利益6です。
これを解決するには、次の手順に従います。
-
n:=価格のサイズ
-
関数recur()を定義します。これにはi:=0とフラグ:=0
が必要です。 -
iがnと同じ場合、
-
0を返す
-
-
フラグがfalseの場合、
-
recur(i + 1、1)の最大値を返します-prices [i]およびrecur(i + 1、0)
-
-
recur(i + 1、1)およびrecur(i + 1、0)+価格の最大値を返します[i]-手数料
-
メインメソッドからrecur()
を呼び出します
理解を深めるために、次の実装を見てみましょう。
例
class Solution: def solve(self, prices, fee): n = len(prices) def recur(i=0, flag=0): if i == n: return 0 if not flag: return max(recur(i + 1, 1) - prices[i], recur(i + 1, 0)) return max(recur(i + 1, 1), recur(i + 1, 0) + prices[i] - fee) return recur() ob = Solution() prices = [2, 10, 4, 8] fee = 3 print(ob.solve(prices, fee))
入力
[2, 10, 4, 8], 3
出力
6
-
Pythonプログラムで最大積と合計がN-Set-2に等しいNの4つの因子を見つけます
数Nがあるとすると、Nのすべての因子を見つけて、次のようにNの4つの因子の積を返す必要があります。4つの因子の合計はNと同じです。4つの因子の積は最大です。製品を最大化するために、4つの要素すべてを互いに等しくすることができます。 1 2 3 4 5 6 10 12 15 20 30 60であり、製品は50625です。これは、製品を作成するために15が4回選択されているためです。最大。 これを解決するには、次の手順に従います- 要因:=新しいリスト 1から(nの平方根)+ 1の整数までの範囲のiの場合、do n mod iが0と同じ場合、 因子の最後にiを挿入しま
-
Pythonで最大のビットごとのANDとビットごとのORを持つサブシーケンスを検索します
n個の要素の配列があるとすると、ビットの合計が最初のサブシーケンスのすべての要素の賢明なAND演算と、2番目のサブシーケンスのすべての要素のビット単位のOR演算が最大になります。 したがって、入力がA ={4、6、7、2}の場合、7のみを選択して最大AND値を取得し、すべてを選択して最大OR値を取得するため、出力は14になります(4 | 6 | 7 | 2)=7.したがって、結果は7 + 7=14になります。 これを解決するには、次の手順に従います- and_max:=arrの最大値 or_max:=0 0からarrのサイズまでの範囲のiの場合、実行します or_m