ワインを味わう
白駿2156
最も大量のワインを手に入れた.
にゅうしゅつりょく
入出力66101398133
方法
:dpで解く.階段を登るように、ワインを3つ連続で飲むことはできません.
この2つの比較は最大値を保存します.
しかし、エラーが発生しました.
最後の一杯は飲まないかもしれないので、出力はdp[-1]ではなくmax(dp)ですが、やはり間違っています.
知るところ
今でもワインを飲まないことを考えるべきです.
階段を登る問題では、一度に1段か2段まで登ることができますが、ワインにはそんな条件はないので、必ずしも飲む必要はありません.
ex.[10400,5,6,7100]で100+400+7+100を飲むのが一番価値があります.
コード#コード#
n = int(input())
wine = []
for _ in range(n):
wine.append(int(input()))
dp = []
dp.append(wine[0])
if n == 1:
print(dp[0])
exit()
dp.append(wine[0]+wine[1])
if n==2:
print(dp[1])
exit()
dp.append(max(dp[1], wine[0]+wine[2], wine[1]+wine[2]))
for i in range(3, n):
dp.append(max(dp[i-1], wine[i]+wine[i-1]+dp[i-3], wine[i]+dp[i-2]))
print(max(dp))
Reference
この問題について(ワインを味わう), 我々は、より多くの情報をここで見つけました https://velog.io/@sezeom/포도주-시식テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol