当前位置: 首页 > news >正文

题解:洛谷 P1004 [NOIP 2000 提高组] 方格取数

【题目来源】

洛谷:P1004 [NOIP 2000 提高组] 方格取数 - 洛谷

【题目描述】

设有 \(N\times N\) 的方格图 (\(N\le 9\)),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字 \(0\)。如下图所示(见样例):

image

某人从图的左上角的 \(A\) 点出发,可以向下行走,也可以向右走,直到到达右下角的 \(B\) 点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字 \(0\))。
此人从 \(A\) 点到 \(B\) 点共走两次,试找出 \(2\) 条这样的路径,使得取得的数之和为最大。

【输入】

输入的第一行为一个整数 \(N\)(表示 \(N\times N\) 的方格图),接下来的每行有三个整数,前两个表示位置,第三个数为该位置上所放的数。一行单独的 \(0\) 表示输入结束。

只需输出一个整数,表示 \(2\) 条路径上取得的最大的和。

【输出】

只需输出一个整数,表示 \(2\) 条路径上取得的最大的和。

【输入样例】

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

【解题思路】

image

【算法标签】

《洛谷 P1004 方格取数》 #动态规划,dp# #递归# #费用流# #NOIP提高组# #2000#

【代码详解】

#include <bits/stdc++.h>
using namespace std;int a[15][15];          // 存储网格中的数值
int dp[15][15][15][15];  // 四维DP数组,记录两条路径的最大和
int n, x, y, num;        // n: 网格大小,x/y: 坐标,num: 数值/*** 辅助函数:返回四个数中的最大值*/
int f(int a, int b, int c, int d)
{return max(max(a, b), max(c, d));
}int main()
{// 输入网格大小ncin >> n;// 输入网格数据,直到遇到x=0结束while (cin >> x >> y >> num && x){a[x][y] = num;}// 动态规划计算两条路径的最大和for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){for (int k = 1; k <= n; k++){for (int l = 1; l <= n; l++){// 确保两条路径同步前进(i+j == k+l)if (i + j == k + l){// 状态转移:取四种可能的最大值加上当前两个点的值dp[i][j][k][l] = f(dp[i-1][j][k-1][l],dp[i-1][j][k][l-1],dp[i][j-1][k-1][l],dp[i][j-1][k][l-1])+ a[i][j] + a[k][l];// 如果两条路径重合,减去重复计算的值if (i == k && j == l){dp[i][j][k][l] -= a[k][l];}}}}}}// 输出最终结果(原代码缺少输出语句,这里保持原样)return 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
http://www.jsqmd.com/news/397088/

相关文章:

  • 基于高频信号的PMSM转矩脉动抑制:一场仿真探索之旅
  • 3分钟搞懂深度学习AI:感知机,AI模仿大脑
  • 题解:洛谷 P2679 [NOIP 2015 提高组] 子串
  • 论文降AI后导师说风格变了怎么办?保持个人写作风格的实用指南
  • 题解:洛谷 P1439 两个排列的最长公共子序列
  • php条件语句(混合php的if语句和js编程)
  • 题解:洛谷 P4933 大师
  • 基于LSTM的共享单车需求预测研究
  • 题解:洛谷 P2285 [HNOI2004] 打鼹鼠
  • 题解:洛谷 P1020 [NOIP 1999 提高组] 导弹拦截
  • 携程任我行礼品卡回收实操步骤 - 京顺回收
  • 研究生开题答辩前如何确保论文AI率合格?导师不会告诉你的实操指南
  • neovim配置python插件支持环境 —— Pynvim 环境搭建 —— Pynvim安装
  • 期刊投稿也要查AI了?学术期刊AIGC检测现状与对策
  • Gemini 3.1 Pro在这个平台便宜到离谱,编程能力竟然超过GPT-5.2和Opus 4.6
  • MySQL几种count比
  • 2026年广州AI获客服务商赋能实体经济标杆企业TOP10榜单:技术与产业深度融合的领航者 - 野榜精选
  • 在K8s集群中部署Traefik并验证Python HTTP服务
  • 深入浅出 K8s 内外部通信:全场景方案解析与生产实践
  • 2026年热压/烫金/丝印皮牌工艺行业优质供应商TOP10推荐:聚焦全链条服务能力,助力品牌价值升级 - 野榜精选
  • 深入解析Nginx反向代理多服务时静态资源路径冲突的根源与解决方案
  • 2026年,探寻有抗衰老功效的保健品,保健品/抗衰老片,保健品食品选哪家 - 品牌推荐师
  • 2026年2月无管道新风机品牌TOP10榜单:技术创新与场景适配性双维度评选 - 野榜精选
  • 对数额外空间的森林判定
  • OpenJDK和Oracle JDK有什么区别和联系?
  • 探寻2026可长期服用能抗疲劳的保健品,抗衰老片/保健品,保健品产品哪家好 - 品牌推荐师
  • Linux 多线程编程入门:线程栈、TLS、互斥锁与条件变量详解
  • C++的多态是如何体现的?一篇文章搞懂C++虚函数机制与常见问题
  • 【Linux】sudo 命令提升权限的使用技巧
  • HTTP 协议发展详解:从 HTTP/1 到 HTTP/3