TYVJ 1049 最长不下降子序列 by C++
入门DP,直接贴代码
1: #include<iostream>
2: #include<string.h>
3: using namespace std;
4:
5: int n,ans=0;
6: const int maxn=5000;
7: int f[maxn],a[maxn];
8:
9: void get_input()
10: {
11: memset(f,0,sizeof(f));
12: memset(a,0,sizeof(a));
13: cin >> n;
14: for (int i=1;i<=n;i++) cin >> a[i];
15: }
16:
17: void get_answer()
18: {
19: for (int i=n-1;i>0;i--){
20: for (int j=i+1;j<=n;j++){
21: if (a[j]>=a[i] && f[j]+1>f[i]) f[i]=f[j]+1;
22: }
23: }
24: for (int i=1;i<=n;i++) if (f[i]>ans) ans=f[i];
25: }
26:
27: int main()
28: {
29: get_input();
30: get_answer();
31: cout << ++ans << endl;
32: }