[アルゴリズム]動的計画(Dynamic Programming)-白準1912回連続使用
826 ワード
import sys
input = sys.stdin.readline
n = int(input().rstrip())
numArr = list(map(int, input().rstrip().split(' ')))
for i in range(1, len(numArr)):
numArr[i] = max(numArr[i], numArr[i-1]+numArr[i])
print(max(numArr))
解法
連続和は動的計画法における最も基本的な問題である.
前から配列で受け取った値を比較し、iの1番目の値と前の和を比較し、より大きな値を入れます.
誤った解釈
import sys
input = sys.stdin.readline
n = int(input().rstrip())
numArr = list(map(int, input().rstrip().split(' ')))
dp = []
for i in range(n):
sub = [numArr[i]]
for j in range(i+1, n):
sub.append(sub[-1] + numArr[j])
sub.sort()
dp.append(sub[-1])
print(max(dp))
動的プランニング法の方法が考えられなかった場合,加算したすべての値を比較した.もちろんタイムアウト!
動的計画法をよりよく応用する方法を学ぶべきだと思います:)
Reference
この問題について([アルゴリズム]動的計画(Dynamic Programming)-白準1912回連続使用), 我々は、より多くの情報をここで見つけました https://velog.io/@minidoo/알고리즘-동적-계획법Dynamic-Programming-백준-1912번-연속합テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol