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

[CSP-J2020] 方格取数

题目

1
2

代码

#include <bits/stdc++.h>
using namespace std;
const int N=1e3+5;
int n,m,d[N][N];//方格数 
long long int fa[N][N],//从左和从上过来,找最大 fb[N][N],//从左过来和从下过来,找最大 f[N][N];//最大和 int main(){//freopen("data.cpp","r",stdin);cin>>n>>m;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>d[i][j];//每个格子的数值,可能是负值 for(int i=0;i<=n+1;i++)for(int j=0;j<=m+1;j++)fa[i][j]=fb[i][j]=f[i][j]=LLONG_MIN;//要找最大,所以不能初始为0 f[1][1]=d[1][1];//从左上出发 for(int i=2;i<=n;i++)f[i][1]=f[i-1][1]+d[i][1];//不能往左,第一列只能往下 for(int j=2;j<=m;j++){//解决剩余列 for(int i=1;i<=n;i++)fa[i][j]=max(fa[i-1][j],f[i][j-1])+d[i][j];//每列往右往下的最大 for(int i=n;i>=1;i--)fb[i][j]=max(fb[i+1][j],f[i][j-1])+d[i][j];//每列往右往上的最大 for(int i=1;i<=n;i++)f[i][j]=max(fa[i][j],fb[i][j]);//留下更大的 }cout<<f[n][m];return 0;
}

分析

  • 从左上出发往右下,可右、可上、可下,单元格数值可能是负,求最大路径和。
  • 通过定义状态数组,记录到达每个格子的最大路径和,利用子问题的最优解推导出全局最优解。
  • 状态f[i][j]每个格子的最大路径和,辅助数组fa[i][j]每个格子从左和从上过来的最大路径和,辅助数组fb[i][j]每个格子从左和从下过来的最大路径和。
  • 状态转移
  • 初始状态,f[1][1]=d[i][j]出发格子,其他都是从该格子推算。所以第一列直接求出。每个格子都可能是负数,所以找最大值不能跟0比较,要跟最小比LLONG_MIN.
  • 时间复杂度,共m列,每列三次n循环,所以是O(N*M)=106 <108
http://www.dtcms.com/a/333919.html

相关文章:

  • [1Prompt1Story] 生成行为控制器 | 语义向量重加权(SVR)
  • qt vs2019编译QXlsx
  • 从 “视频孪生” 到 “视频动态目标三维重构”:技术演进与核心突破
  • 使用npm link本地测试组件库
  • [Linux] Linux tar文档管理 系统间复制文档
  • KingbaseES高可用架构深度解析——从读写分离到异地灾备的全方位守护
  • 零改造迁移实录:2000+存储过程从SQL Server滑入KingbaseES V9R4C12的72小时
  • 线程池与异步编程——语法归纳
  • STM32F407 TIM pwm 调试笔记, LL库
  • 安卓11 12系统修改定制化_____如何去除安卓11 12的系统签名验证
  • 【大模型应用开发 1.嵌入模型与向量数据库 Chroma】
  • JavaEE 初阶第十九期:网络编程“通关记”(一)
  • C# 应用特性的更多内容:多维度解析与深度拓展
  • AI安全防御框架:纵深防御与零信任策略浅谈
  • 【C 学习】06-算法程序设计举例
  • pnpm(Performant npm)的安装
  • 欧姆龙CP系列以太网通讯实现上位机与触摸屏监控
  • ClickHouse的学习与了解
  • 基于隐私保护的旅游信息共享平台(LW+源码+讲解+部署)
  • 数据结构:迭代方法(Iteration)实现树的遍历
  • 新手向:Python异常处理(try-except-finally)详解
  • k8sday08深入控制器(3/3)
  • Arduino通过MQTT发送消息到树莓派
  • 【大模型核心技术】Dify 入门教程
  • GitHub 热榜项目 - 日榜(2025-08-16)
  • 心路历程-三个了解敲开linux的大门
  • 基于Uni-app+vue3实现微信小程序地图固定中心点范围内拖拽选择位置功能(分步骤详解)
  • 基于uni-app+vue3实现的微信小程序地图范围限制与单点标记功能实现指南
  • SpringBoot 整合 Langchain4j:系统提示词与用户提示词实战详解
  • uniapp:微信小程序使用Canvas 和Canvas 2D绘制图形