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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步