zoukankan      html  css  js  c++  java
  • Little shop of flowers

    题目大意:把 M 朵花插入 N 个花瓶中,每个花插入不同的花瓶都有一个价值A[Mi][Nj],要使所有的花都插入花瓶,求出来最大的总价值(花瓶为空时价值是0)。

    分析:dp[i][j]表示前i朵花插入前j个花瓶的最大价值,那么比较容易看出 dp[i][j] = max(dp[i][j-1], dp[i][j-1]+A[i][j]),也就是这个花瓶要还是不要,别忘记输出路径。

    代码如下:

    ========================================================================================================================================

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    
    const int MAXN = 107;
    const int oo = 1e9+7;
    
    int dp[MAXN][MAXN];
    int A[MAXN][MAXN];
    
    void Path(int x, int y, int M)
    {
        if(x == 0)
            return ;
    
        if(dp[x][y] == dp[x][y-1])
            Path(x, y-1, M);
        else
        {
            Path(x-1, y-1, M);
            printf("%d%c", y, x==M ? '
    ':' ');
        }
    }
    
    int main()
    {
        int M, N;///M朵花,N个花瓶
    
        scanf("%d%d", &M, &N);
    
        for(int i=1; i<=M; i++)
        for(int j=1; j<=N; j++)
            scanf("%d", &A[i][j]);
    
        for(int i=1; i<=M; i++)
            dp[i][0] = -oo;
    
        for(int i=1; i<=M; i++)
        for(int j=1; j<=N; j++)
        {
            dp[i][j] = max(dp[i][j-1], dp[i-1][j-1]+A[i][j]);
        }
    
        printf("%d
    ", dp[M][N]);
    
        Path(M, N, M);
    
        return 0;
    }
  • 相关阅读:
    python之各种包
    正则表达式
    import/模块的导入
    迭代器/可迭代对象/生成器
    Day2 列表list
    Day1 字符串格式化
    Day1 字符编码及编码函数
    Python 学习笔记 之 随着学习不断更新的Python特性搜集
    Day1 input&print
    Newtonsoft.Json日期转换
  • 原文地址:https://www.cnblogs.com/liuxin13/p/4806443.html
Copyright © 2011-2022 走看看