问题描述:
设L=<a1,a2,…,an>是n个不同的实数的序列,L的递增子序列是这样一个子序列Lin=<aK1,ak2,…,akm>,其中k1<k2<…<km且aK1<ak2<…<akm。求最大的m值。
输入
n=5
a={4,2,3,1,5}
输出
3(注:2,3,5)
思路分析:
首先看到就可以暴力破解,利用二层循环,不断更新最大值,即可得出结果。
具体见代码注释:
import java.util.Scanner;
public class Zcsszxv {
public static int solve(int []b)//暴力破解法
{
int cnt=0;//记录最大值
int len=b.length;//记录b的长度
for (int i = 0; i <len ; i++) {
int temp=1;//记录临时最大值
int max=b[i];//记录前一个最大值
for (int j = i+1; j <len ; j++) {
if (b[j]>max)
{
temp++;
max=b[j];
}
}
if (temp>cnt)//更新cnt的值
cnt=temp;
}
return cnt;
}
public static void main(String[] args) {
Scanner a=new Scanner(System.in);
int n=a.nextInt();
int[] b=new int[n];//数组输入
for (int i = 0; i <n ; i++) {
b[i]=a.nextInt();
}
System.out.println(solve(b));
}
}
运行结果: