1627拦截导弹
贪心+动态规划
#include <iostream>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main() {
int a[1010];
int r[1010] = { 0 };
int allnum = 0;
int n = 0;
while (cin >> a[n]) {
n++;
}
// 动态规划
*int maxsequence[1010];
int maxNum = 0;
for (int i = 0; i < n; i++) {
maxsequence[i] = 1;
for (int j = 0; j < i; j++) {
if (a[j] >= a[i]) {
maxsequence[i] = max(maxsequence[i], maxsequence[j] + 1);
if (maxsequence[i] <= maxsequence[j] + 1) {
maxsequence[i] = maxsequence[j] + 1;
}
else {
maxsequence[i] = maxsequence[i];
}
}
}
if (maxsequence[i] >= maxNum) {
maxNum = maxsequence[i];
}
else {
maxNum = maxNum;
}
}*
// 第二问:贪心
int g[4030];
int rnl = 0;
for (int i = 0; i < n; i++) {
int kn = 0;
while (kn < rnl && g[kn] < a[i]) {
kn++;
}
g[kn] = a[i];
if (kn >= rnl) {
rnl++;
}
}
cout << maxNum << endl;
cout << rnl << endl;
}