聪明的美食家

时间限制: 1 Sec   内存限制: 256 MB

题目描述

如果有人认为吃东西只需要嘴巴,那就错了。 
都知道舌头有这么一个特性,“由简入奢易,由奢如简难”(据好事者考究,此规律也适合许多其他情况)。具体而言,如果是甜食,当你吃的食物不如前面刚吃过的东西甜,就很不爽了。 
大宝是一个聪明的美食家,当然深谙此道。一次他来到某小吃一条街,准备从街的一头吃到另一头。为了吃得爽,他大费周章,得到了各种食物的“美味度”。他拒绝不爽的经历,不走回头路而且还要爽歪歪(爽的次数尽量多)。 

输入

两行数据。 
第一行为一个整数n,表示小吃街上小吃的数量 。

第二行为n个整数,分别表示n种食物的“美味度”

数据规模和约定 
美味度为0到100的整数 
n< 1000

输出

一个整数,表示吃得爽的次数。

样例输入

10
3  18  7  14  10  12  23  41  16  24 

样例输出

6

解题报告

最长上升子序列,只是多加了相等的情况。具体见代码:
#include<stdio.h>
int main() {
    int a[1010], len[1010];
    int n, templen, max;
    while (~scanf("%d", &n)) {
        for (int i = 0; i < n; i++)
            scanf("%d", &a[i]);
        max = len[0] = 1;
        for (int i = 1; i < n; i++) {
            templen = 0;
            for (int k = 0; k < i; k++) {
                if (a[k] <= a[i] && templen < len[k])
                    templen = len[k];
            }
            len[i] = templen + 1;
        }
        for (int i = 0; i < n; i++) {
            if (len[i] > max)
                max = len[i];
        }
        printf("%d\n", max);
    }
    return 0;
}