LIS 问题

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<queue>
 5 #include<map>
 6 #include<vector>
 7 #include<set>
 8 #include<string>
 9 #include<cmath>
10 #include<cstring>
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<n;i++)
19     {
20         dp[i]=1;
21         for(int j=0;j<i;j++)
22         {
23             if(a[j]<a[i])//如果满足,就比较当前和dpj+1哪个更大 
24                 dp[i]=max(dp[i],dp[j]+1);
25         }
26         res=max(res,dp[i]);
27     }
28 //    for(int i=0;i<n;i++)
29 //        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<n;i++)
37         scanf("%d",&a[i]);
38     solve();
39     return 0;
40 }

 

posted @ 2020-02-11 20:28  付玬熙  阅读(100)  评论(0编辑  收藏  举报