基础dp

dp

A

B

C

D

E

F

G

H

I

求最少有多少个下降的子序列
其实也可以贪心的去取

ac code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <bits/stdc++.h>
using namespace std;
const int maxn = 3e4+100;
int num[maxn];
int dp[maxn];
int main()
{
int n;
while(cin>>n){
for(int i=0; i<maxn; i++) dp[i] = 1;
for(int i=0; i<n; i++) cin>>num[i];
for(int i=0; i<n; i++){
for(int j=0; j<i; j++){
if(num[i]>num[j]) dp[i] = max(dp[i], dp[j]+1);
}
}
int ans = -1;
for(int i=0; i<n; i++){
ans = max(ans, dp[i]);
}
cout<<ans<<endl;
}
return 0;
}

贪心的做法

1
2

J

K

L

M

N

O

P

Q

R

S

未解决的问题

文章目录
  1. 1. A
  2. 2. B
  3. 3. C
  4. 4. D
  5. 5. E
  6. 6. F
  7. 7. G
  8. 8. H
  9. 9. I
    1. 9.1. ac code
  10. 10. 贪心的做法
  11. 11. J
  12. 12. K
  13. 13. L
  14. 14. M
  15. 15. N
  16. 16. O
  17. 17. P
  18. 18. Q
  19. 19. R
  20. 20. S
  21. 21. 未解决的问题
{{ live2d() }}