每日算法-05(最長上升子序列)

求最長上升子序列

第一行輸入一個數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

相關文章
相關標籤/搜索