1 solutions
-
0
C++ :
#include<bits/stdc++.h> using namespace std; const int N=10010; int A[N],dp[N]; int main() { int n; cin>>n; for(int i=1; i<=n; i++) { cin>>A[i]; } int ans=-1; //记录最大的dp[i] for(int i=1; i<=n; i++) { //按顺序计算出dp[i]的值 dp[i]=1; //边界初始条件(即先假设每个元素自成一个子序列) for(int j=1; j<i; j++) { if(A[i]>A[j]&&(dp[j]+1>dp[i])) { dp[i]=dp[j]+1; //状态转移方程,用以更新dp[i] } } ans=max(ans,dp[i]); } cout<<ans<<endl; return 0; }
- 1
Information
- ID
- 10544
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By