1277:【例9.21】方格取数——数字三角形模型

news2024/11/27 15:49:43

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

在这里插入图片描述

某人从图中的左上角A出发,可以向下行走,也可以向右行走,直到到达右下角的B点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。

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

【输入】
第一行为一个整数N(N≤10),表示N×N的方格图。

接下来的每行有三个整数,第一个为行号数,第二个为列号数,第三个为在该行、该列上所放的数。一行“0 0 0”表示结束。

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

【输入样例】
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

分析

  1. 题意就是两个人同时从起点走,然后取到达终点的最大值**;两个人同时走**(不走回头路),在任何时刻,他们的横纵坐标和一定相等(即i1+j1 == i2+j2);所以当i1==i2的时候,这两个人一定位于同一个格子
  2. 所以可以用状态转移方程f[i1][j1][i2][j2]来表示这两个人分别走到(i1,j1)、(i2,j2)时的最大数字和,但是由于同一时刻两人走的步数一样,所以可以用k = i1+j1 = i2+j2,所以状态转移方程降到三维,f[k][i1][i2]:k为横纵坐标和,i1为第一个人的横坐标,i2为第二个人的横坐标,f[k][i1][i2]的值就是走到(i1,j1)、(i2,j2)当前最大和;
  3. 直接分析最后一个状态的情况,两个坐标两两组合,一共有如下图四种情况;f(k-1,i1-1,i2-1)、f(k-1,i1-1,i2)、f(k-1,i1,i2-1)、f(k-1,i1,i2);
    在这里插入图片描述
#include<bits/stdc++.h>

using namespace std;

const int N = 15;

int n;
int arr[N][N];
int f[N * 2][N][N];// f[k][i1][i2]:k为横纵坐标和,i1为第一个人的横坐标,i2为第二个人的横坐标

int main() {
    cin >> n;
    int a, b, c;
    while (cin >> a >> b >> c, a || b || c) {
        arr[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) {
                // k = i1+j1 = i2+j2
                int j1 = k - i1, j2 = k - i2;
                if (j1 >= 1 && j2 >= 1 && j1 <= n && j2 <= n) {
                    int t;//当前两个人分别走到(i1,j1)、(i2,j2)这两个点的数字值
                    //两人当前在同一个格子,只用算一个格子
                    if (i1 == i2) {
                        //i1==i2,j1=k-i1=j2=k-i2
                        t = arr[i1][k - i1];
                    } else {
                        //两人不在同一格子,是两个格子的和
                        t = arr[i1][k - i1] + arr[i2][k - i2];
                    }
                    //两个人都是往下过来的
                    f[k][i1][i2] = max(f[k][i1][i2], f[k - 1][i1 - 1][i2 - 1] + t);
                    //一下一右
                    f[k][i1][i2] = max(f[k][i1][i2], f[k - 1][i1 - 1][i2] + t);
                    //一右一下
                    f[k][i1][i2] = max(f[k][i1][i2], f[k - 1][i1][i2 - 1] + t);
                    //一右一右
                    f[k][i1][i2] = max(f[k][i1][i2], f[k - 1][i1][i2] + t);
                }
            }
        }
    }
    cout << f[2 * n][n][n];
    return 0;
}



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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何实现同一IP的不同端口访问不同的网站

一&#xff0c;要求 1&#xff0c; 基于同一IP的不同端口访问不同的网站(可以通过域名去访问) ipport1 -> 对应一个域名 ipport2 -> 对应一个域名 使用域名1我应该访问到 ipport1对应的内容 使用域名2我应该访问到 ipport2对应的内容 2. …

阳了怎么居家办公?这4款远程办公软件你得知道!

疫情高峰期尚未过去&#xff0c;可是临近年底&#xff0c;各公司各部门都到了算绩效、追回款、清退结算的时候&#xff0c;大家都忙得根本脱不开身&#xff01;居家远程办公也不得不架起电脑回消息&#xff01; 本文给大家推荐4款超好用的远程办公软件&#xff0c;高效省事&am…

【机器学习 - 1】:knn算法

文章目录机器学习的概念和基础knn算法的实现过程封装knn算法总结机器学习的概念和基础 机器学习可以两类任务&#xff1a; 分类任务和回归任务 以机器学习本身来进行分类可分为&#xff1a; 监督学习 非监督学习 半监督学习 增强学习 监督学习&#xff1a;给机器的训练数据 有标…

android架构拆分方案-结构相关方案与技术

很纯、很生硬的架构技术归纳blog上上文https://blog.csdn.net/dongyi1988/article/details/128617738接上文https://blog.csdn.net/dongyi1988/article/details/128629011android架构官网地址https://source.android.google.cn/docs/core/architecture?hlzh-cnGKI&#xff08;…

VBO、VAO、EBO学习记录

在这里要先了解一下OpenGL的一个幕后大致运作流程&#xff0c;可以直接阅读OPENGL CN 我自己大概总结了一下就是&#xff0c;OpenGL本身就是一个巨大的状态机&#xff0c;我们通过更改状态变量(上下文)来告诉OpenGL如何去绘制图像。一般通过设置选项&#xff0c;修改缓冲来更改…

【网络与系统安全】国科大《网络与系统安全》复习大纲整理 + 考试记忆版

国科大《网络与系统安全》复习整理笔记 重在理解概念考试不算太难 文章目录一、新形势安全面临挑战和安全保障能力提升二、网络与系统安全的需求与目标三、自主与强制访问控制1.访问控制的基本概念2.访问控制的要素3.访问控制3种基本类型4.访问控制矩阵、访问控制列表、访问控制…

【Linux修炼】13.缓冲区

每一个不曾起舞的日子&#xff0c;都是对生命的辜负。 缓冲区的理解一. C接口打印两次的现象二. 理解缓冲区问题为什么要有缓冲区缓冲区刷新策略的问题所说的缓冲区在哪里&#xff1f;指的是什么缓冲区&#xff1f;三. 解释打印两次的现象四. 模拟实现五. 缓冲区与OS的关系一. …

ThinkPHP 表单验证使用

对前端或表单请求的数据&#xff0c;一定要做校验&#xff0c;而使用ThinkPHP 验证器则可以事半功倍。 可以使用validate助手函数&#xff08;或者封装验证方法&#xff09;进行验证。TP版本6.1。 目录 验证场景 验证器 创建验证器 定义规则和提示 数据验证 独立验证&…

Arbotix使用

内容学自赵虚左的视频及资料 需求描述: 控制机器人模型在 rviz 中做圆周运动 1.安装 Arbotix 方式1:命令行调用 sudo apt-get install ros-<<VersionName()>>-arbotix <<VsersionName()>> 替换成当前 ROS 版本名称 添加 arbotix 所需配置文件 # …

Web原型设计规范

上篇文章为大家介绍了app端在进行原型设计时的设计规范&#xff0c;本篇将继续为大家介绍一下Web端&#xff08;这里主要指网页端&#xff09;的设计规范。其实web端的设计规范并没有像app端那样多&#xff0c;因为展示的空间比较大&#xff0c;所有要求也就没有那么严苛。 电脑…

Spring_事务

事务的主要内容 事务定义 特性&#xff1a;ACID 并发时产生的问题 事务的隔离级别 锁 事务的传播特性 异常处理 超时 只读事务 TransactionDefinition 并发时产生的问题 一个数据库可以允许多个客户端同时访问&#xff0c;即并发的方式访问数据库。数据库中的同一个数据可能同…

2023年12306购票平台自动化购票终|解决乘客选择与车票提交(附自动化购票完整源代码与演示视频)

目录 一、说明 1.1、背景 1.2、说明 二、步骤 2.1、切换视角检索乘车乘客 2.2、选择乘客 2.3、关闭学生票选择界面 2.4、提交订单 2.5、选择座位并确认 三、完整代码与视频演示 3.1、完整源代码如下 3.2、视频演示代码运行 四、结果 4.1、代码运行结果 五、总结…

windows获取iOS设备信息

依赖环境&#xff1a; 1.python3.6以上版本&#xff0c; 2.配置python的系统环境变量。 3.python已经安装pip。 安装tidevice: 1.打开cmd&#xff0c;输入命令pip3 install -U "tidevice[openssl]"如图所示&#xff0c;安装成功。 2.查看tidevice版本号&#xff0c…

网络超火的音效素材、BGM,全在这里了。

推荐几个超好用的音效素材网站&#xff0c;全网火爆的音效、BGM这里都能找到&#xff0c;自媒体、视频剪辑小伙伴必备&#xff01;建议收藏&#xff01; 1、菜鸟图库 https://www.sucai999.com/audio.html?vNTYwNDUx 菜鸟图库是一个综合性素材网站&#xff0c;站内涵盖设计、…

vector模拟实现之迭代器失效及深浅拷贝的问题

vector模拟实现 Tips&#xff1a;new申请空间不用判断&#xff0c;因为失败的话会抛异常。 STL源代码中vector的私有成员变量如下&#xff1a; private:iterator _start;//首元素iterator _finish;//最后一个有效数据的下一个&#xff0c;-_start为sizeiterator _endofstora…

6-3分布散度的9个梯度

( A, B )---1*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有1个节点&#xff0c;AB各由9张二值化的图片组成&#xff0c;排列组合A和B的所有可能性&#xff0c;固定收敛误差为7e-4&#xff0c;统计收敛迭代次数&#xff0c;并比较迭代次数的变化规律。 差值结构 A-B 迭代次数 …

Huawei Matebook X Pro 2018 Space Gray电脑 Hackintosh 黑苹果efi引导文件

硬件型号驱动情况主板Huawei Matebook X Pro 2018 Space Gray处理器Intel Core i7-8550U已驱动内存16 GB LPDDR4 2133 MHz已驱动硬盘LiteON SSD PCIe NVMe 512 GB [CA3-8D512]已驱动显卡NVIDIA GeForce MX150 (Disabled) / Intel(R) UHD Graphics 620已驱动声卡瑞昱ALC256 英特…

微积分——导数和切线问题

目录 1. 切线(Tangent Line)问题 2. 函数的导数(derivative) 3. 函数的可微性(differentiability)与连续性(Continuity) 1. 切线(Tangent Line)问题 微积分的出现源于17世纪欧洲数学家们正在研究解决的四个主要的问题&#xff1a; (1) 切线(tangent line)问题&#xf…

使用Alexnet实现CIFAR10数据集的训练

如果对你有用的话&#xff0c;希望能够点赞支持一下&#xff0c;这样我就能有更多的动力更新更多的学习笔记了。&#x1f604;&#x1f604; 使用Alexnet进行CIFAR-10数据集进行测试&#xff0c;这里使用的是将CIFAR-10数据集的分辨率扩大到224X224&#xff0c;因为在测试…

第03讲:Docker 容器的数据卷

一、什么是数据卷 数据卷是宿主机中的一个目录或文件&#xff0c;当容器目录或者文件和数据卷目录或者文件绑定后&#xff0c;对方的修改会立即同步&#xff0c;一个数据卷可以被多个容器同时挂载&#xff0c;一个容器也可以被挂载多个数据卷&#xff0c;数据卷的作用:容器数据…