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

1212. 地宫取宝

题目:

1212. 地宫取宝 - AcWing题库

 

 思路:dp(最长上升子序列和摘花生的结合)

代码:

 

#include<iostream>
using namespace std;
const int N = 55;
const int MOD = 1000000007;int n, m, k;
int w[N][N];//每个坐标格子上宝贝的价值int f[N][N][13][14];/*f是当前条件下的方案数量。
前两维表示坐标
三维表示已经取得的宝贝数量
四维表示已经取得的宝贝中的最后一个宝贝的价值(即当前最大)*/int main()
{//输入行n列m以及所需要的宝贝数量kcin >> n >> m >> k;//输入每个格子宝贝的价值for(int i=1;i<=n;i++)for (int j = 1; j <= m; j++) {cin >> w[i][j];w[i][j]++;//为方便对f进行初始化,将每个宝贝的价值都加一,不影响结果}//f初始化f[1][1][0][0] = 1;//起点,不拿起点坐标格子上的宝贝/*此时没有取任何一件宝贝,故存入的最大值为空,应该比所以宝贝的价值都小。宝贝原本的最小值为0,但下标不能取负数,这也是为何上面要将宝贝的整体价值加一的原因*/f[1][1][1][w[1][1]] = 1;//起点,拿起点坐标格子上的宝贝for(int i=1;i<=n;i++)//一维横坐标for (int j = 1; j <= m; j++) {//二维纵坐标if (i == 1 && j == 1)continue;//f的第一行第一列已经初始化过了for(int u=0;u<=k;u++)//三维表示已经取得宝贝数量for (int v = 0; v <= 13; v++)//四维表示已取得宝贝的最大价值{//不取当前空格的宝贝f[i][j][u][v] = (f[i][j][u][v] + f[i - 1][j][u][v]) % MOD;//存图左上角f[i][j][u][v] = (f[i][j][u][v] + f[i][j - 1][u][v]) % MOD;//存图左上角//取当前空格的宝贝if (u > 0 && v == w[i][j])//此时当前格子上的宝贝的价值为最大v{for (int c = 0; c < v; c++){f[i][j][u][v] = (f[i][j][u][v] + f[i - 1][j][u - 1][c]) % MOD;//图左下f[i][j][u][v] = (f[i][j][u][v] + f[i][j - 1][u - 1][c]) % MOD;//图右下}}}}int res = 0;//累加器,求到达右下角(m,n)时所以取得宝贝数量为k且满足递增条件的情况for (int i = 0; i <= 13; i++)res = (res + f[n][m][k][i]) % MOD;cout << res << endl;}

相关文章:

  • 【解决问题】---- 解决 avue-crud 表格勾选数据翻页后界面保持选中
  • 使用PE U盘在VM Workstation中安装系统
  • 二十、泛型(4)
  • 【PTE-day06 文件上传】
  • Spring boot集成sentinel限流服务
  • react typescript @别名的使用
  • 【面经】讲一下线程池的参数和运行原理
  • Flutter IOS 前后台切换主题自动变化的问题
  • 鸿蒙列表,类似于安卓的RecyclerView
  • 虚拟机Linux-Centos系统网络配置常用命令+Docker 的常用命令
  • 2023年11月编程语言流行度排名
  • 写论文中的心得记录
  • AVL树 c语言版本 插入部分
  • 01-基于IDEA,Spring官网,阿里云官网,手动四种方式创建SpringBoot工程
  • 5分钟Python安装实战(MAC版本)
  • canvas 五子棋游戏
  • create-react-app做的留言板
  • ES10 特性的完整指南
  • Git同步原始仓库到Fork仓库中
  • IndexedDB
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • java正则表式的使用
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • MobX
  • spark本地环境的搭建到运行第一个spark程序
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 从setTimeout-setInterval看JS线程
  • - 概述 - 《设计模式(极简c++版)》
  • 关于springcloud Gateway中的限流
  • 经典排序算法及其 Java 实现
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 找一份好的前端工作,起点很重要
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • ​520就是要宠粉,你的心头书我买单
  • ​如何在iOS手机上查看应用日志
  • (2015)JS ES6 必知的十个 特性
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (day 12)JavaScript学习笔记(数组3)
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (九)c52学习之旅-定时器
  • (论文阅读30/100)Convolutional Pose Machines
  • (生成器)yield与(迭代器)generator
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)VC++中ondraw在什么时候调用的
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .jks文件(JAVA KeyStore)
  • .NET BackgroundWorker
  • .Net 高效开发之不可错过的实用工具
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [AutoSar]BSW_OS 02 Autosar OS_STACK
  • [AutoSar]工程中的cpuload陷阱(三)测试
  • [Bzoj4722]由乃(线段树好题)(倍增处理模数小快速幂)