题目:给定N个数,求这N个数的最长上升子序列的长度。
动态规划的求解步骤:
1.将原问题分解为子问题
2.确定状态。
3.确定一些初始状态的值(边界状态)的值。
4.确定状态转移方程。
public class dp_Longestascendingsubsequence {
static int Max=1010;
static int n;
static int [] arr=new int [Max];
static int [] maxLen=new int [Max];
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner cin=new Scanner(System.in);
n=cin.nextInt();
for (int i = 1; i <=n; i++) {
arr[i]=cin.nextInt();
maxLen[i]=1;
}
for (int i = 2; i <=n; i++) {
for (int j = 1; j <i; j++) {
if(arr[i]>arr[j]){
maxLen[i]=Math.max(maxLen[i], maxLen[j]+1);
}
}
}
Arrays.sort(maxLen);
System.out.println(maxLen[Max-1]);
}
}