#include <iostream> using namespace std; /* 最长递减序列 */ int missile[30]; int dp[30]; //dp[i]表示以i位置结尾的最长递减序列的长度 int main() { int k; scanf("%d", &k); for(int i = 0; i < k; i++){ scanf("%d", &missile[i]); } fill(dp, dp + 30, 1); //给dp赋初值1 for(int i = 1; i < k; i++){ //遍历missile数组,找到比当前missile[i]要大的高度 for(int j = 0; j < i; j++){ if(missile[i] <= missile[j]){ //注意这里高度相同也能打到 dp[i] = max(dp[j] + 1, dp[i]); } } } int max = 0; for(int i = 0; i < k; i++){ //遍历dp数组,找到最大值 max = max > dp[i] ? max : dp[i]; } printf("%d\n", max); } // 64 位输出请用 printf("%lld")