[BOJ/Python]1722次最長減少部分数列
3128 ワード
この問題はダイナミックプログラミングで解決した.方法は、数列を巡回し、数が現在の数より多い場合、dp配列の現在位置を更新することです.点火式はdp[i]=max(dp[i],dp[j]+1)である.
->i反復するjのfor文.
-->a[j]がa[i]より大きい場合、dp[i]はdp[i]およびdp[j]+1のより大きな値に更新される.
Code n=int(input())
a=list(map(int, input().split()))
dp=[1]*n
for i in range(n):
for j in range(i):
if a[j]>a[i]:
dp[i]=max(dp[i], dp[j]+1)
print(max(dp))
Reference
この問題について([BOJ/Python]1722次最長減少部分数列), 我々は、より多くの情報をここで見つけました
https://velog.io/@xx0hn/BOJ-Python-11722번-가장-긴-감소하는-부분-수열
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
n=int(input())
a=list(map(int, input().split()))
dp=[1]*n
for i in range(n):
for j in range(i):
if a[j]>a[i]:
dp[i]=max(dp[i], dp[j]+1)
print(max(dp))
Reference
この問題について([BOJ/Python]1722次最長減少部分数列), 我々は、より多くの情報をここで見つけました https://velog.io/@xx0hn/BOJ-Python-11722번-가장-긴-감소하는-부분-수열テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol