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

动态规划(三维)直接按照题目条件

竞赛中心 - 蓝桥云课

#include <iostream>
#define int long long
const int A=101;
using namespace std;
const int MOD=1000000007;
int dp[A][A][A];
signed main()
{// 请在此输入您的代码int N,M;cin>>N>>M;dp[0][0][2]=1;for(int i=0;i<=N;i++){for(int j=0;j<=M;j++){for(int k=0;k<=M;k++){if(i>0&&k%2==0){dp[i][j][k]+=dp[i-1][j][k/2]%MOD;}if(j>0&&k>0){dp[i][j][k]+=dp[i][j-1][k+1]%MOD;}}}}cout<<dp[N][M-1][1]%MOD<<endl;return 0;
}

题目中有三个变化量,店数,花数,酒数,设dp[i][j][k]表示在遇到i个店,j个花后还剩k个酒的方案数。

状态转移方程:

        if(i>0&&k%2==0){dp[i][j][k]+=dp[i-1][j][k/2]%MOD;}if(j>0&&k>0){dp[i][j][k]+=dp[i][j-1][k+1]%MOD;}

第一种情况:dp[i][j][k]时的方案总数等于此时的方案总数加上遇到店减一时且酒数减半的方案数(这种情况的限定条件是店数大于0,k是2的倍数,防止数组错误)

第二种情况:dp[i][j][k]时的方案总数等于此时的方案总数加上遇到花减一且酒数加一的方案数(这种情况的限定条件是j与k都大于0)

http://www.xdnf.cn/news/1271899.html

相关文章:

  • windows上LM-Studio下载安装教程
  • 衰减器的计算
  • Java 时间和空间复杂度
  • 推荐系统学习笔记(十)多目标排序模型
  • 《软件测试与质量控制》实验报告五 功能自动化测试
  • SpringSecurity过滤器链全解析
  • 学习:JS[8]本地存储+正则表达式
  • 心灵笔记:思考三部曲
  • 谷歌搜索 sg_ss 逆向分析
  • 计算机网络:深入了解CIDR地址块如何利用VLSM进行子网划分的过程
  • 算法_python_牛客华为机试笔记_01
  • C++算法练习:单词识别
  • 应急响应复现
  • 传输线模拟经验谈
  • 新手入门:Git 初次配置与 Gitee 仓库操作全指南 —— 从环境搭建到代码推送一步到位
  • 编辑距离-二维动态规划
  • Kotlin初体验
  • git命令详解
  • 百度网盘如何做到下载速度最快?OpenSpeedy绿色安装版下载,开源免费网盘加速
  • react 常用组件库
  • Day37--动态规划--52. 携带研究材料(卡码网),518. 零钱兑换 II,377. 组合总和 Ⅳ,57. 爬楼梯(卡码网)
  • Poetry与UV——现代Python依赖管理的革新者
  • Linux 安装 JDK 8u291 教程(jdk-8u291-linux-x64.tar.gz 解压配置详细步骤)​
  • 深入理解 Gin 框架的路由机制:从基础使用到核心原理
  • 蓝牙技术概览
  • imx6ull-驱动开发篇16——信号量与互斥体
  • 练习uart和摄像头内核驱动开发测试
  • 【Python 高频 API 速学 ⑦ · 完结篇】
  • Netbsd安装使用
  • Vue3的简单学习