首页 > 其他分享 >动态规划--摆花(二维dp)

动态规划--摆花(二维dp)

时间:2024-01-20 20:14:58浏览次数:35  
标签:摆花 下标 -- long int 种花 dp

#include <iostream>
using namespace std;
//dp[i][j]表示第i种花位置,第j个位置为止
long long int dp[120][120];
long long int a[160];
int main()
{
int n,m;
cin>>n>>m;//n种花m盆
for(int i=1;i<=n;i++){
  cin>>a[i];
}
dp[0][0]=1;
for(int i=1;i<=n;i++ ){
  for(int j=0;j<=m;j++){
    for(int k=0;k<=j&&k<=a[i];k++){
      dp[i][j]=(dp[i][j]+dp[i-1][j-k])%(1000007);
    }
  }
}
cout<<dp[n][m];
  // 请在此输入您的代码
  return 0;
}

方法:二维动态规划

思路是:

利用一个数组dp[i][j]表示到第i种花第j个位置为止

花种的下标从1开始

dp[0][0]=1     -->到第0种花第0个位置初始化为1

核心代码:

for(int i=1;i<=n;i++ ){
  for(int j=0;j<=m;j++){
    for(int k=0;k<=j&&k<=a[i];k++){
      dp[i][j]=(dp[i][j]+dp[i-1][j-k])%(1000007);
    }
  }
}
花种的下标为1
遍历n种花,j个位置0~m(因为初始化dp[0][0]为1,
dp[i-1][j-k]下标从[0][0]开始

 

标签:摆花,下标,--,long,int,种花,dp
From: https://www.cnblogs.com/luckyyaoyao/p/17977056

相关文章

  • 加权区间调度问题
    问题描述:给定n个job,每个活动i的开始时间和结束时间,对应一个权值,找出权值之和最大的相容活动子集。(若两个job的时间不相交,则称两个活动是相容的compatible)方案一(递归算法)算法设计:OPT(j): //j个活动求相容活动子集的最大权值    If j == 0 thenreturn 0Elsereturn max......
  • 1/20 学习进度笔记
    完成了搜索引擎日志分析小案例数据由两万条一下六列相同格式的单个数据组成 分别对应:搜索时间  用户ID搜索内容URL返回排名用户点击顺序用户点击的URL 使用到了python的jieba插件进行热词的分析TODO:需求1:用户搜索关键‘词’分析需求1结果:[('sc......
  • YOLOv8终极指南
    YOLOv8是计算机视觉领域的最新发展,它是一种用于目标检测、实例分割和分类的最新先进模型。除了对模型架构本身的改进之外,YOLOv8通过一个用于使用YOLO模型的PIP包为开发者提供了一个新的友好界面。在这篇文章中,我们将深入探讨YOLOv8在计算机视觉领域的重要性,将其与其他类似模型在......
  • 1.20寒假每日总结11
    学习执行计划。简单的解释为:explainquery;一个简单的例子为:explainselectsum(id)fromtest1;该语句的执行计划为:STAGEDEPENDENCIES:Stage-1isarootstageStage-0dependsonstages:Stage-1STAGEPLANS:Stage:Stage-1MapReduceMap......
  • C++U3-第11课-单、双链表
    学习目标 链表概念计算机存储结构 单链表 实现单链表       删除 插入节点  双向链表  实现双链表         [【数据结构-链表】猴子选大王] 【题意分析】通过循环报数的方式每一次剔除......
  • spring--JDK动态代理的实现原理
    JDK动态代理的实现原理涉及到Java的反射机制。它允许在运行时动态创建一个代理类,这个代理类实现了一组接口,并将所有方法调用转发到一个InvocationHandler实例。下面是JDK动态代理的实现原理的详细步骤:定义接口:首先,定义一个或多个接口,这些接口声明了需要被代理的方法。......
  • C++编译全过程
    1.源文件.cpp2.预处理:将所有的#include头文件以及宏定义替换成其真正的内容(删除所有的注释、宏扩展、文件包含).i3.汇编:转换为汇编语言.s4.编译:转换为二进制机器码.o(目标文件)5.链接:链接过程将多个目标文件以及所需的库文件(.so等)链接成最终的可执行文件(executablefile)......
  • 关于C++符号表
    符号表是程序/单元中“符号”的列表。符号通常是变量或函数的名称。符号表可用于确定变量或函数在内存中的位置。简而言之,SymbolTable是分配给函数&变量的名称与其在内存中的地址的映射,包括类型、范围和大小等元数据。最终由编译器使用。通常,C或C++编译器将单个源文件编译......
  • Arch旧式安装
    cpu架构X86_64主板支持UEFI工具准备1.ArchLinuxLivehttps://mirrors.aliyun.com/archlinux/iso/latest/archlinux-x86_64.iso?spm=a2c6h.25603864.0.0.578c6488N8teka2.写入工具https://github.com/pbatard/rufus/releases/download/v4.1/rufus-4.1.exe3.U盘随意基本安......
  • spring--CGLIB动态代理的实现原理
    CGLIB(CodeGenerationLibrary)是一个强大的、高性能、高质量的代码生成库,它可以在运行时扩展Java类和实现Java接口。CGLIB动态代理是基于继承的方式来实现的,它不需要接口,可以代理普通类。以下是CGLIB动态代理的实现原理:继承:CGLIB动态代理通过继承目标类来创建子类,并在......