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