第一行输入一个数n,接下来一行,输入n个数值,求最长上升子序列;
输入例子:
5
2 1 8 3 6
输出:
3
解析:1 3 6java
赶脚这个代码不是很优,由于时间用了15秒,仅战胜了百分之丢丢,空间也不是很优,本身太菜了,先上菜吧,开个胃,哈哈哈;3d
import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in=new Scanner(System.in); int n=in.nextInt(); int i=0,j=0; int dp[]=new int[n+1];int aa[]=new int [n+1]; for(i=0;i<n;i++) { aa[i]=in.nextInt(); } int ans=0; for(i=0;i<aa.length;i++) { dp[i]=1; for(j=0;j<i;j++) { if(aa[j]<aa[i]) { dp[i]=Math.max(dp[j]+1,dp[i]); } } ans=Math.max(ans,dp[i]); } System.out.print(ans); return; } }
仅本身这样想的,不包含科学质上对哈,有错欢迎提出。❀code