输入包含多组数据,每组数据第一行包含一个正整数n(1≤n≤1000)。
紧接着第二行包含n个正整数m(1≤n≤10000),代表队伍中每位队员的身高。
对应每一组数据,输出最长递增子序列的长度。
7 1 7 3 5 9 4 8 6 1 3 5 2 4 6
4 4
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
while (scan.hasNext()){
int n = scan.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++){
arr[i] = scan.nextInt();
}
System.out.println(func(arr,n));
}
}
public static int func (int[] arr,int n){
int[] dp = new int[n];
dp[0] = 1;
int max = 1;
for (int i = 1; i < n; i++){
dp[i] = 1;
for (int j = i-1; j >= 0; j--){
if (arr[i] > arr[j]){
dp[i] = Math.max(dp[i],dp[j]+1);
}
}
if (dp[i] >= max){
max = dp[i];
}
}
return max;
}
} import java.util.Arrays;
import java.util.Scanner;
public class LongestIncreaseSub {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()) {
int n=sc.nextInt();
int[] nums=new int[n];
for(int i=0;i<n;i++) {
nums[i]=sc.nextInt();
}
int[] dp=new int[n];
for(int i=0;i<n;i++) {
dp[i]=1;
}
for(int i=1;i<n;i++) {
for(int j=0;j<i;j++) {
if(nums[i]>nums[j]) {
dp[i]=Math.max(dp[j]+1, dp[i]);
}
}
}
Arrays.sort(dp);
System.out.println(dp[n-1]);
}
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextInt()) {
int n = sc.nextInt();
int[] m = new int[n];
for (int i = 0; i < n; i++) {
m[i] = sc.nextInt();
}
int[] dp = new int[n];
dp[0] = 0;
int max = 0;
for (int i = 1; i < n; i++) {
for (int j = 0; j < i; j++) {
if (m[j] < m[i]) {
dp[i] = Math.max(dp[j] + 1, dp[i]);
if (max < dp[i]) {
max = dp[i];
}
}
}
}
System.out.println(max + 1);
}
}
}