zoukankan      html  css  js  c++  java
  • bjfu1253 最大上升子序列和

    n^2的算法就行,很简单的动态规划。直接上代码

    /*
     * Author    : ben
     */
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <cmath>
    #include <ctime>
    #include <iostream>
    #include <algorithm>
    #include <queue>
    #include <set>
    #include <map>
    #include <stack>
    #include <string>
    #include <vector>
    #include <deque>
    #include <list>
    #include <functional>
    #include <numeric>
    #include <cctype>
    using namespace std;
    /*
     * 输入非负整数
     * 支持short、int、long、long long等类型(修改typec即可)。
     * 用法typec a = get_int();返回-1表示输入结束
     */
    typedef int typec;
    typec get_int() {
        typec res = 0, ch;
        while (!((ch = getchar()) >= '0' && ch <= '9')) {
            if (ch == EOF)
                return -1;
        }
        res = ch - '0';
        while ((ch = getchar()) >= '0' && ch <= '9')
            res = res * 10 + (ch - '0');
        return res;
    }
    //输入整数(包括负整数,故不能通过返回值判断是否输入到EOF,本函数当输入到EOF时,返回-1),用法int a = get_int2();
    int get_int2() {
        int res = 0, ch, flag = 0;
        while (!((ch = getchar()) >= '0' && ch <= '9')) {
            if (ch == '-')
                flag = 1;
            if (ch == EOF)
                return -1;
        }
        res = ch - '0';
        while ((ch = getchar()) >= '0' && ch <= '9')
            res = res * 10 + (ch - '0');
        if (flag == 1)
            res = -res;
        return res;
    }
    /**
     * 输入一个字符串到str中,与scanf("%s", str)类似,
     * 会忽略掉缓冲区中的空白字符。返回值为输入字符串
     * 的长度,返回-1表示输入结束。
     */
    int get_str(char *str) {
        char c;
        while ((c = getchar()) <= ' ') {
            if(c == EOF) {
                return -1;
            }
        }
        int I = 0;
        while (c > ' ') {
            str[I++] = c; c = getchar();
        }
        str[I] = 0;
        return I;
    }
    
    const int MAXN = 1010;
    int data[MAXN], f[MAXN];
    int N;
    
    int main() {
        while ((N = get_int()) > 0) {
            for (int i = 0; i < N; i++) {
                data[i] = get_int2();
            }
            f[0] = data[0];
            for (int i = 1; i < N; i++) {
                int ma = 0;
                for (int j = i - 1; j >= 0; j--) {
                    if (data[j] < data[i] && f[j] > ma) {
                        ma = f[j];
                    }
                }
                f[i] = ma + data[i];
            }
            printf("%d
    ", *max_element(f, f + N));
        }
        return 0;
    }
  • 相关阅读:
    centos/7下安装mysql5.7
    ubuntu下用vagrant搭建集群环境
    ubuntu下pyspark的安装
    Ubuntu下teamviewer的安装
    volatile(一)
    synchronized(九)
    synchronized(八)
    synchronized(七)
    synchronized(六)
    synchronized(五)
  • 原文地址:https://www.cnblogs.com/moonbay/p/4279474.html
Copyright © 2011-2022 走看看