输入包含多组数据,每组数据第一行包含一个正整数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); } } }