最長下降なしサブシーケンス(ダイナミックプランニング)
最も長くて下がらないサブシーケンスは何ですか?シーケンスの中からいくつかの数を選んで新しいシーケンスを構成し、彼らのチームの順序を変えず、新しいシーケンスの中でxi≦xi+1≦xi+1を要求することを指す.
例として{4,6,5,7,3}を挙げると,最長降下しないサブシーケンスは{4,6,7}である.同様に、最長上昇しないサブシーケンスもあります.最長で下がらないシーケンスを見つけて、その長さを出力するシーケンスが出てきました.
構想:典型的な動的計画問題、状態移行方程式はコードを参照する.
例として{4,6,5,7,3}を挙げると,最長降下しないサブシーケンスは{4,6,7}である.同様に、最長上昇しないサブシーケンスもあります.最長で下がらないシーケンスを見つけて、その長さを出力するシーケンスが出てきました.
構想:典型的な動的計画問題、状態移行方程式はコードを参照する.
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
int[] A = new int[N+1];
int[] dp = new int[N+1];
A[0] = 0;
for(int i=1; i<=N; i++)
{
A[i] = scanner.nextInt();
}
Arrays.fill(dp, 1);
for(int i=2; i<=N; i++)
{
for(int j=1;j= A[j])
{
dp[i] = Math.max(dp[i], dp[j]+1); //
}
}
}
Arrays.sort(dp);
System.out.println(dp[N]);
}
}