質問: index_tuple2 + 1 # x is index_tuple1 if number_coin==1 and tuple1[x-1]tuple1[x+1]: #極大値かつ硬貨一個 # の場合 total += val number_coin -= 1 elif number_coin==0 and tuple1[x-1]>tuple1[x] and tuple1[x]
回答: > > ルール: 一日に一回取引が可能。売るか。買うか。何もしないか。ただし、多くても一個の硬貨しか持てない。それ以上は持てないとする。 > > > このルールに従えば、硬貨を持っている場合は「売るか。何もしないか。」 硬貨を持っていない場合は「買うか。何もしないか。」ですから 再帰関数を使用して prices を1つずつ進めるのが良さそうです。 ``` def cal_price(prices, coin=0, profit=0): if not prices: return profit if coin: return max(cal_price(prices[1:], coin, profit), # 何もしない cal_price(prices[1:], 0, profit + prices[0] - coin)) # 売る else: return max(cal_price(prices[1:], coin, profit), # 何もしない cal_price(prices[1:], prices[0], profit)) # 買う prices = [2,3,5,1,8,9,2] ans = cal_price(prices) print(ans) # 11 ```