zoukankan      html  css  js  c++  java
  • 问题 B: Curriculum Vitae

    问题 B: Curriculum Vitae

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 109  解决: 25
    [提交][状态][讨论版][命题人:acm4302]

    题目描述

    Hideo Kojima刚辞去Konami的工作。现在他将找到一个新的工作场所。尽管他是一个知名人士,但他仍然需要一份简历来申请工作。

     

    在他的职业生涯中,已经制作了n个游戏。其中一些是成功的,有些则不是。Hideo希望从他的简历中删除其中几个,以便给雇主留下更好的印象。因此,在他的简历中,成功的游戏后应该没有不成功的游戏。

     

    更正式地说,给你一个值为0或1的数组s1,s2,...,sn。零对应于不成功的游戏,一对应于成功的游戏。游戏是按照它们制作的顺序给出的,Hideo不能交换这些值。他应该从这个数组中删除一些元素,使得这个数组在一之后不会出现零。

     

    除此之外,Hideo还想在他的简历中提及尽可能多地游戏。帮助他确定可以在他的简历中留下的最大游戏数量。

    输入

    第一行包含一个整数n(1≤n≤100)。

    第二行包含n个用空格隔开的整数s1,s2,...,sn(0≤si ≤1)。0对应于不成功的游戏,1对应于成功的游戏。

    输出

    一个整数 - Hideo可以在他的简历中留下的最大游戏数量,以便在成功之后不会出现不成功的游戏。

    样例输入

    4
    1 1 0 1
    

    样例输出

    3
    #include<stdio.h>
    int max(int a, int b)
    {
        return (a > b ? a : b);
    }
    int main()
    {
        int n, i, j, k;
        int m = -999;
        int dp[999] = {0};
        int a[999];
        scanf("%d", &n);
        for(i = 0; i < n; ++i)
            scanf("%d", &a[i]);
        for(i = 0; i < n; ++i)
        {
            dp[i] = 1;
            if(a[i] == 0)
            {
                for(j = 0; j < i; ++j)
                {
                    if(a[j] == 0)
                        dp[i] = max(dp[i], dp[j] + 1);
                }
            }
            if(a[i] == 1)
            {
                for(j = 0; j < i; ++j)
                    dp[i] = max(dp[i], dp[j] + 1);
            }
            m = max(m, dp[i]);
        }
        printf("%d", m);
        return 0;
    }
  • 相关阅读:
    C#操作REDIS例子
    A C# Framework for Interprocess Synchronization and Communication
    UTF8 GBK UTF8 GB2312 之间的区别和关系
    开源项目选型问题
    Mysql命令大全——入门经典
    RAM, SDRAM ,ROM, NAND FLASH, NOR FLASH 详解(引用)
    zabbix邮件报警通过脚本来发送邮件
    centos启动提示unexpected inconsistency RUN fsck MANUALLY
    rm 或者ls 报Argument list too long
    初遇Citymaker (六)
  • 原文地址:https://www.cnblogs.com/mjn1/p/9750715.html
Copyright © 2011-2022 走看看