最長下降なしサブシーケンス(ダイナミックプランニング)


最も長くて下がらないサブシーケンスは何ですか?シーケンスの中からいくつかの数を選んで新しいシーケンスを構成し、彼らのチームの順序を変えず、新しいシーケンスの中でxi≦xi+1≦xi+1を要求することを指す.
例として{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]);
}
}