2 条题解
-
0
B3637 最长上升子序列——题解
解题思路
令
f[i]表示以第 个数结尾的最长上升子序列长度。枚举所有更早位置 ,若a[j]<a[i],就可以把第 个数接在以 结尾的序列后面,更新f[i]=max(f[i],f[j]+1)。复杂度分析
时间复杂度 ,空间复杂度 。
C++17 参考代码
#include <bits/stdc++.h> using namespace std; int a[5005],f[5005]; int main(){ ios::sync_with_stdio(false);cin.tie(nullptr); int n;cin>>n;int ans=0; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=n;i++){f[i]=1;for(int j=1;j<i;j++)if(a[j]<a[i])f[i]=max(f[i],f[j]+1);ans=max(ans,f[i]);} cout<<ans<<'\n';return 0; } -
0
#include <bits/stdc++.h> using namespace std; int a[5005],f[5005]; int main(){ ios::sync_with_stdio(false);cin.tie(nullptr); int n;cin>>n;int ans=0; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=n;i++){f[i]=1;for(int j=1;j<i;j++)if(a[j]<a[i])f[i]=max(f[i],f[j]+1);ans=max(ans,f[i]);} cout<<ans<<'\n';return 0; }
- 1
信息
- ID
- 4911
- 时间
- 5000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 2
- 上传者
粤公网安备44195502000195号