zoukankan      html  css  js  c++  java
  • AcWing 1015. 摘花生

    AcWing 1015

    Description

    给定一个 (R * C) 的矩阵,每个格子都有价值(M[i][j])

    每次只能向右或向下走,问从((1, 1))走到((R, C))可获得的最大价值。

    Solution

    因为每次只能向右或下走,考虑(f[i][j])表示在((i, j))位置时可获得的最大价值

    则该点只能从上方((i - 1, j))和左方((i, j - 1))转移过来

    所以转移方程为:

    (f[i][j] = max(f[i - 1][j], f[i][j - 1]) + f[i][j])

    注意初始值(f[1][1] = a[1][1])

    Code

    by pjx 2021.7.1
    modified 2021.7.2
    
    #include <bits/stdc++.h>
    using namespace std;
    const int N = 105;
    int T, r, c, f[N][N], a[N][N];
    int main()
    {
        cin >> T;
        while(T--)
        {
            cin >> r >> c;
            for(int i = 1; i <= r; i++)
            {
                for(int j = 1; j <= c; j++)
                    cin >> a[i][j];
            }
            memset(f, 0, sizeof f );
            f[1][1] = a[1][1];
            for(int i = 1; i <= r; i++)
            {
                for(int j = 1; j <= c; j++)
                {
                    if(i != 1 || j != 1)//特判,因为f[1][1]已有初始值了,无需更新
                      f[i][j] = max(f[i - 1][j], f[i][j - 1]) + a[i][j];
                }
            }
            cout << f[r][c] << endl;
        }
        return 0;
    }
    
  • 相关阅读:
    css的选择器
    javaScript 的变量使用
    关于外键约束
    javaScript中运算符
    css介绍和三种引入方式
    关于盒子模型
    类和类的六种关系
    DQL和DML更多操作
    javaScript的特点
    关于 让页面中的按钮 响应回车
  • 原文地址:https://www.cnblogs.com/pjxpjx/p/14960248.html
Copyright © 2011-2022 走看看