[python]白駿/ワイン試飲/215号/DP
DPコンセプトショートカット
質問する
ワイン試飲問題リンク
孝珠はワインの試飲会に行きました.そこへ行くと、テーブルの上にいろいろなワインが盛られたグラスが並んでいました.孝珠はワインを味わいます.ここには2つのルールがあります.ブドウグラスを選択した場合、このカップのワインはすべて飲んで、飲んだ後に元の場所に戻すべきです. が並んでいる3杯を全部飲み干すわけにはいかない. できるだけ多くのワインを味わうために、孝珠はどのワイングラスを選ぶべきか悩んでいる.1からn番のn個のブドウの杯は順番にテーブルの上に置いて、各ブドウの杯の中のブドウの酒の量はタイミングをあげて、1つのプログラムを編纂して、あなたが最も多くのワインを飲むことを助けてください.
例えば、6個のブドウグラスがあり、各コップの中に6、10、13、9、8、1の順であれば、1番目、2番目、4番目、5番目のブドウグラスを選択すれば、総ブドウ酒量は最大33に達することができる.
入力
最初の行はブドウのコップの個数nを与えます.(1≦n≦10000)第2列からn+1列まで、ワインカップ中のブドウ酒の量が順次与えられる.ワインの量は1000以下の音ではなく整数です.
最初の行で飲める最大のブドウ酒の量を出力します.
dp値に今までワインを飲んだ最大量を貯蔵する
現在位置iの場合
i-3までのdp値+i-1のブドウ酒量+iのブドウ酒量=1番
i-2までのdp値+iのブドウ酒量=2号
i-1までのdp値=3回
1,2,3回の最大値は現在のdp[i]に格納される
? : オレンジ部分の和の中で最安値
コード#コード#
質問する
ワイン試飲問題リンク
孝珠はワインの試飲会に行きました.そこへ行くと、テーブルの上にいろいろなワインが盛られたグラスが並んでいました.孝珠はワインを味わいます.ここには2つのルールがあります.
例えば、6個のブドウグラスがあり、各コップの中に6、10、13、9、8、1の順であれば、1番目、2番目、4番目、5番目のブドウグラスを選択すれば、総ブドウ酒量は最大33に達することができる.
入力
最初の行はブドウのコップの個数nを与えます.(1≦n≦10000)第2列からn+1列まで、ワインカップ中のブドウ酒の量が順次与えられる.ワインの量は1000以下の音ではなく整数です.
6
6
10
13
9
8
1
しゅつりょく最初の行で飲める最大のブドウ酒の量を出力します.
33
方法dp値に今までワインを飲んだ最大量を貯蔵する
現在位置iの場合
i-3までのdp値+i-1のブドウ酒量+iのブドウ酒量=1番
i-2までのdp値+iのブドウ酒量=2号
i-1までのdp値=3回
1,2,3回の最大値は現在のdp[i]に格納される
? : オレンジ部分の和の中で最安値
コード#コード#
# url : https://www.acmicpc.net/problem/2156
# 난이도 : silver 1
import sys
n = int(input())
dp = [0] * 10001
wine_list = [0] + [int(sys.stdin.readline()) for _ in range(n)]
dp[1] = wine_list[1]
if n >= 2 :
dp[2] = wine_list[1] + wine_list[2]
for i in range(3,n+1):
dp[i] = max(dp[i-3] + wine_list[i-1] + wine_list[i], dp[i-2] + wine_list[i], dp[i-1])
print(dp[n])
Reference
この問題について([python]白駿/ワイン試飲/215号/DP), 我々は、より多くの情報をここで見つけました https://velog.io/@gandi0330/Python-백준-포도주-시식-2156번-DPテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol