LIS 问题


 1 #include
 2 #include
 3 #include
 4 #include
 5 #include
 6 #include
 7 #include<set>
 8 #include<string>
 9 #include
10 #include
11 using namespace std;
12 int a[1010];
13 int n; 
14 int dp[1010];//以i结尾的有多少个 
15 void solve()
16 {
17     int res=0;
18     for(int i=0;i)
19     {
20         dp[i]=1;
21         for(int j=0;j)
22         {
23             if(a[j]//如果满足,就比较当前和dpj+1哪个更大 
24                 dp[i]=max(dp[i],dp[j]+1);
25         }
26         res=max(res,dp[i]);
27     }
28 //    for(int i=0;i29 //        printf("%d\n",dp[i]);
30     printf("%d\n",res);
31 }
32 
33 int main()
34 {
35     scanf("%d",&n);
36     for(int i=0;i)
37         scanf("%d",&a[i]);
38     solve();
39     return 0;
40 }
oj