方格取数问题

更好的阅读体验 方格取数。

题目:方格取数

设有 N×N 的方格图,我们在其中的某些方格中填入正整数,而其它的方格中则放入数字0。如下图所示:

某人从图中的左上角 A 出发,可以向下行走,也可以向右行走,直到到达右下角的 B 点。

在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。

此人从 A 点到 B 点共走了两次,试找出两条这样的路径,使得取得的数字和为最大。

输入格式

第一行为一个整数N,表示 N×N 的方格图。

接下来的每行有三个整数,第一个为行号数,第二个为列号数,第三个为在该行、该列上所放的数。

行和列编号从 11 开始。

一行“0 0 0”表示结束。

输出格式

输出一个整数,表示两条路径上取得的最大的和。

数据范围

N≤10

输入样例:
8
2 3 13
2 6 6
3 5 7
4 4 14
5 2 21
5 6 4
6 3 15
7 2 14
0 0 0
输出样例:
67
解题思路:

​ 从左上角走到右下角,于是想到DP中的数字三角形模型。关于数字三角形模型,可以去看这篇文章[线性DP](线性DP - 小樱桃 (oyto.github.io)/)。

​ 这题的不同点是,这里要取两次数,于是进行DP过程:

f[i1,j1,i2,j2]表示所有从(1,1),(1,1)分别走到(i1,j1),(i2,j2)路径的最大值。

如何处理“同一个格子不能被重复选择”?
    分析后发现,只有当i1 + j1 == i2 + j2时,两条路径的格子才可能重合,
    于是可以根据这条性质将思维优化成三维,

集合:f[k,i1,i2]表示所有从(1,1),(1,1)走到(i1,k-i1),(i2,k-i2)的路径的最大值
    k表示两条路线当前走到的格子的横纵坐标之和

属性:max

状态计算:
    以最后一步是从往下走还是往右走进行划分,因为有两次走法,所以被分成了四种情况
        下下、下右、右下、右右

为什么下面四个状态转移方程能代表四种状态?

原因是,因为k 变小了1,先不看最后一步,如果i变小1,则j就不用变;如果i没有变,则j就需要变小1;
上述两种情况刚好对应了最后一步是向下、右走,的横纵坐标变化情况,又因为是两次一起走,故有四种情况。

x = max(x, f[k - 1][i1 - 1][i2 - 1] + t);   //下 下
x = max(x, f[k - 1][i1 - 1][i2] + t);       //下 右
x = max(x, f[k - 1][i1][i2 - 1] + t);       //右 下
AC代码
#include <iostream>
#include <algorithm>

using namespace std;

const int N = 15;

int n;
int f[N * 2][N][N], g[N][N];

int main()
{
    cin >> n;

    int a, b, c;
    while (cin >> a >> b >> c, a || b || c) g[a][b] = c;

    for (int k = 2; k <= n + n; k ++)   //枚举横纵坐标之和
        for (int i1 = 1; i1 <= n; i1 ++)    //枚举第一次走的横坐标
            for (int i2 = 1; i2 <= n; i2 ++)    //枚举第二次走的横坐标
            {
                int j1 = k - i1, j2 = k - i2;   //计算出两次走的纵坐标
                if (j1 >= 1 && j1 <= n && j2 >= 1 && j2 <= n)
                {
                    int t = g[i1][j1];  //如果两个坐标相等,只加一次,因为第二次走这里,已经被拿走清空了
                    if (i1 != i2) t += g[i2][j2];   //坐标不相同,就两个位置全加上
                    int &x = f[k][i1][i2];
                    x = max(x, f[k - 1][i1 - 1][i2 - 1] + t);   //下 下
                    x = max(x, f[k - 1][i1 - 1][i2] + t);       //下 右
                    x = max(x, f[k - 1][i1][i2 - 1] + t);       //右 下
                    x = max(x, f[k - 1][i1][i2] + t);            //右 右
                }
            }

    printf("%d\n", f[n + n][n][n]);

    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/222366.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设备制造行业CRM:提升客户满意度,驱动业务增长

设备制造行业客户需求多样化、服务链路长&#xff0c;企业在关注APS、EMS等工业软件之余还要以客户为中心&#xff0c;做好客户服务。设备制造行业CRM管理系统是企业管理客户关系的利器&#xff0c;设备制造行业CRM的作用有哪些&#xff1f;一文带您看懂。 设备制造行业需要解…

金蝶云星空单据编辑界面,不允许批量填充操作

文章目录 金蝶云星空单据编辑界面&#xff0c;不允许批量填充操作案例演示开发设计测试 金蝶云星空单据编辑界面&#xff0c;不允许批量填充操作 案例演示 售后单&#xff0c;明细信息单据体&#xff0c;物料编码字段禁止批量填充。 开发设计 编写表单插件&#xff0c;在Be…

绝地求生游戏一定要先训练吗?

绝地求生&#xff08;PlayerUnknowns Battlegrounds&#xff0c;简称PUBG&#xff09;作为一款大热的多人在线生存游戏&#xff0c;自上线以来一直备受玩家追捧。对于新手玩家来说&#xff0c;刚接触这款游戏时常常觉得难以上手&#xff0c;需要进行一定的训练才能够在游戏中取…

Java毕业设计—vue+SpringBoot人事管理OA系统前后端分离

1&#xff0c;项目介绍 本系统主要分四个模块&#xff0c;分别是系统管理和权限管理、薪资管理、考勤管理 2&#xff0c;技术框架 前端 Vue、Axios、ElementUI、Vue-Router、Vuex、ECharts后端 Spring Boot、JWT、MyBatis-Plus、MySQL、Hutool 3&#xff0c;开发环境 JAVA…

【刘二大人】pytorch深度学习实践(三):如何实现线性模型的反向传播+代码实现详解(Tensor、backward函数)

目录 参考资料一、反向传播流程1.1 问题1.2 方法1.3 步骤1.4 例题 二、Pytorch中前向传播和反馈的计算2.1 tensor数据类型2.2 定义线性模型并且计算损失2.2.1 torch.tensor.item()2.2.2 代码 2.3 反向传播2.3.1 torch.tensor.backward()2.3.2 tensor.zero_( )2.3.3 代码实现 三…

企业机密无忧!好用的文件加密系统大揭秘,尽在这里!

由于众多企业内部都存储着大量机密数据&#xff0c;以电子文档形式存在&#xff0c;且传播手段多样&#xff0c;文件泄密问题容易发生。员工通过网络泄密重要文件&#xff0c;或黑客入侵窃取机密数据等情况&#xff0c;都可能导致企业业务和声誉受到严重损害。因此&#xff0c;…

C++断言assert

2023年12月6日&#xff0c;周三上午 在C中&#xff0c;assert 是一个宏定义&#xff0c;用于在程序运行期间检查一些条件是否满足。如果条件不满足&#xff0c;则 assert 会终止程序并输出一条错误消息。 assert 宏定义的语法如下&#xff1a; #include <cassert>asser…

【ESP8266】ESP8266集成开发环境对比

当涉及到ESP8266开发环境的选择时&#xff0c;有几个常见的选择可供开发人员使用。在本篇文章中&#xff0c;我们将对比一些目前最流行的ESP8266集成开发环境&#xff08;IDE&#xff09;&#xff0c;以帮助您选择最适合您的需求的开发环境。 总结&#xff1a;Arduino IDE和Pl…

学校图书管理系统的开发

目 录 摘要 1 Abstract. 1 1 引言 2 1.1 图书管理的现状 2 1.2 现有图书管理系统的概述 3 1.3 选题的目的、意义 3 1.4 图书管理系统的可行性分析 4 1.5 系统开发运行环境 4 2 图书管理系统开发相关技术的介绍 5 2.1 Asp.net的介绍 5 2.1.1 Asp.net的优势介绍 5 2.1.2 Asp.net…

codeforces 题目 Fadi and LCM

目录 题目&#xff1a; 题目描述&#xff1a; 思路&#xff1a; AC代码&#xff1a; 题目&#xff1a; 题目描述&#xff1a; 给你一个长整型 X ①你需要找到一对 a 和 b &#xff0c;使得 LCM&#xff08;a&#xff0c;b&#xff09; X ②你需要保证 max(a&#xff…

智能优化算法应用:基于水基湍流算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于水基湍流算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于水基湍流算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.水基湍流算法4.实验参数设定5.算法结果6.参考…

css 字体添加外轮廓

color: #ffeb3b; -webkit-text-stroke: 10px transparent; background: linear-gradient(90deg,#5d3d02f5,#5d3d02f5,#5d3d02f5,#5d3d02f5,#5d3d02f5,#5d3d02f5,#5d3d02f5) top left / 100% 100%; -webkit-background-clip: text;

「Verilog学习笔记」无占空比要求的奇数分频

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 timescale 1ns/1nsmodule odd_div ( input wire rst ,input wire clk_in,output wire clk_out5 ); //*************code***********//reg [1:0] data ;reg […

class035 数据结构设计高频题【算法】

class035 数据结构设计高频题【算法】 算法讲解035【必备】数据结构设计高频题 code1 设计有setAll功能的哈希表 // setAll功能的哈希表 // 测试链接 : https://www.nowcoder.com/practice/7c4559f138e74ceb9ba57d76fd169967 // 请同学们务必参考如下代码中关于输入、输出…

class050 双指针技巧与相关题目【算法】

class050 双指针技巧与相关题目【算法】 算法讲解050【必备】双指针技巧与相关题目 code1 922. 按奇偶排序数组 II // 按奇偶排序数组II // 给定一个非负整数数组 nums。nums 中一半整数是奇数 &#xff0c;一半整数是偶数 // 对数组进行排序&#xff0c;以便当 nums[i] 为…

Isaac Sim教程04 Isaac Sim的高级使用

Isaac Sim 高级使用 版权信息 Copyright 2023 Herman YeAuromix. All rights reserved.This course and all of its associated content, including but not limited to text, images, videos, and any other materials, are protected by copyright law. The author holds…

EI论文复现:考虑源荷不确定性的含风电-电力系统低碳调度程序代码!

本程序参考论文《考虑源荷不确定性的含风电-电力系统低碳调度》&#xff0c;程序中考虑了源荷的不确定性&#xff0c;引入模糊机会约束规划来求解不确定性模型&#xff0c;对做相关研究方向的小伙伴非常有帮助&#xff0c;程序算例丰富、注释清晰、干货满满&#xff0c;下面对文…

JAVA刷题之数组的总结和思路分享

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

Amazon Code Whisperer 的正式使用,全新 AI 代码工具等你发现!(内附详细安装步骤图解)

文章作者&#xff1a;稚始稚终 关于 Code Whisperer Code Whisperer&#xff0c;亚马逊推出的实时 AI 编程助手&#xff0c;是一项基于机器学习的服务&#xff0c;它可以分析开发者在集成开发环境&#xff08;IDE&#xff09;中的注释和代码&#xff0c;并根据其内容生成多种代…

【LeetCode:2646. 最小化旅行的价格总和 | DFS + DP】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…