LeetCode 799. 香槟塔(DP动态规划)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

我们把玻璃杯摆成金字塔的形状,其中第一层有1个玻璃杯,第二层有2个,依次类推到第100层,每个玻璃杯(250ml)将盛有香槟。

从顶层的第一个玻璃杯开始倾倒一些香槟,当顶层的杯子满了,任何溢出的香槟都会立刻等流量的流向左右两侧的玻璃杯。
当左右两边的杯子也满了,就会等流量的流向它们左右两边的杯子,依次类推。(当最底层的玻璃杯满了,香槟会流到地板上)

例如,在倾倒一杯香槟后,最顶层的玻璃杯满了。倾倒了两杯香槟后,第二层的两个玻璃杯各自盛放一半的香槟。在倒三杯香槟后,第二层的香槟满了 - 此时总共有三个满的玻璃杯。在倒第四杯后,第三层中间的玻璃杯盛放了一半的香槟,他两边的玻璃杯各自盛放了四分之一的香槟,如下图所示。

现在当倾倒了非负整数杯香槟后,返回第 i 行 j 个玻璃杯所盛放的香槟占玻璃杯容积的比例(i 和 j都从0开始)。

示例 1:
输入: poured(倾倒香槟总杯数) = 1, 
query_glass(杯子的位置数) = 1, 
query_row(行数) = 1
输出: 0.0
解释: 我们在顶层(下标是(00))倒了一杯香槟后,
没有溢出,因此所有在顶层以下的玻璃杯都是空的。示例 2:
输入: poured(倾倒香槟总杯数) = 2, 
query_glass(杯子的位置数) = 1, 
query_row(行数) = 1
输出: 0.5
解释: 我们在顶层(下标是(00)倒了两杯香槟后,
有一杯量的香槟将从顶层溢出,
位于(10)的玻璃杯和(11)的玻璃杯平分了这一杯香槟,
所以每个玻璃杯有一半的香槟。注意:
poured 的范围[0, 10 ^ 9]。
query_glass 和query_row 的范围 [0, 99]

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/champagne-tower
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

class Solution {
public:double champagneTower(int poured, int query_row, int query_glass) {vector<vector<double>> dp(101, vector<double>(101, 0.0));double up_l, up_r;dp[0][0] = poured;for(int i = 1; i <= query_row; ++i) {for(int j = 0; j <= i; ++j){up_l = j > 0 ? dp[i-1][j-1] : 0;//上层左侧酒量up_r = dp[i-1][j];//上层右侧酒量dp[i][j] += up_l > 1 ? (up_l-1)/2.0 : 0;//自己需要留下一杯 -1, 不够的话得到 0dp[i][j] += up_r > 1 ? (up_r-1)/2.0 : 0;//自己需要留下一杯 -1, 不够的话得到 0}}return min(1.0, dp[query_row][query_glass]);}
};

24 ms 41.6 MB

祝大家国庆节中秋节快乐!


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473867.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言进行CGI程序设计

一、CGI概述CGI(公用网关接口)规定了Web服务器调用其他可执行程序(CGI程序)的接口协议标准。Web服务器通过调用CGI程序实现和Web浏览器的交互,也就是CGI程序接受Web浏览器发送给Web服务器的信息,进行处理,将响应结果再回送给Web服务器及Web浏览器。CGI程序一般完成Web网页中表单…

7.MongoDB与python交互

引入模块pymongo from pymongoimport * 主要提供如下对象用于进行交互 MongoClient对象&#xff1a;用于与MongoDB服务器建立连接 DataBase对象&#xff1a;对应着MongoDB中的数据库 Collection对象&#xff1a;对应着MongoDB中的集合 Cursor对象&#xff1a;查询方法find()返…

天池在线编程 2020国庆八天乐 - 7 进制

文章目录1. 题目2. 解题1. 题目 https://tianchi.aliyun.com/oj/118289365933779217/122647324212270017 Given an integer, return its base 7 string representation. 输入范围为[-1e7, 1e7] 。 示例 样例 1: 输入: num 100 输出: 202样例 2: 输入: num -7 输出: -102.…

Hadoop学习之MapReduce

Hadoop学习之MapReduce 目录 Hadoop学习之MapReduce 1 MapReduce简介 1.1 什么是MapReduce 1.2 MapReduce的作用 1.3 MapReduce的运行方式 2 MapReduce的运行机制 2.1 相关进程 2.2 MapReduce的编程套路 2.3 MapTask的并行度 2.4 切片及其源码解读 2.5 ReduceTask的…

四款常见数据库比较同步软件汇总

前言&#xff1a; 目前&#xff0c;数据库技术在各行各业的应用正在逐步加深&#xff0c;在这些应用中普遍采用分布式系统结构。而数据库同步技术是分布式数据库系统中应用非常广泛的一种技术。分 布式数据库系统由多个通过网络连接的数据库组成&#xff0c;它们通常有主从服务…

8.账户管理(非数据库管理人员理解篇

超级管理员 为了更加安全的访问 mongodb,需要访问者提供用户名和密码,于是需要在mongodb 中创建用户 采用了角色-用户-数据库的安全管理方式 常用的的系统角色有: root: 只在 admin 数据中可使用,超级账户,超级权限 Read: 允许用户读取指定的数据库 readWrite: 允许用户读写指…

Hadoop学习之yarn

Hadoop学习之YARN 1 YARN简介 1.1 概述 YARN &#xff08;Yet Another Resource Negotiator&#xff09;是一个资源调度平台&#xff0c;负责为运算程序提供服务器运算资源&#xff0c;相当于一个分布式的操作系统平台&#xff0c;而 MapReduce 等运算程序则相当于运行于操作…

poj1308

#include<stdio.h>#include<string.h>//判断是否有环&#xff0c;判断是否是一个根节点。判断空树的情况#define N 1000000int pre[N10],dis[N10],degree[N10];int find(int n) {return pre[n]npre[n]?n:find(pre[n]);}int main() {int a,b,cnt,flag,f1,f2,i,min,…

天池在线编程 2020国庆八天乐 - 8. 分糖果

文章目录1. 题目2. 解题1. 题目 https://tianchi.aliyun.com/oj/118289365933779217/122647324212270016 描述&#xff1a; 给定长度为偶数的整数数组&#xff0c;该数组中不同的数字代表不同种类的糖果&#xff0c; 每个数字表示一种糖果。 您需要将这些糖果平均分配给弟弟和…

1.Redis简介与基本命令

Redis是一个高性能的key-value存储系统。和Memcached类似&#xff0c;它支持存储的value类型相对更多&#xff0c;包括string(字符串)、list(链表)、set(集合)、zset(sortedset--有序集合)和hash&#xff08;哈希类型&#xff09;。 配置 绑定ip&#xff1a;如果需要远程访问&…

Hive基础知识

Hive基础知识 1 Hive相关概念 1.1 Hive是什么 Hive是基于 Hadoop 的一个数据仓库工具&#xff0c;可以将结构化的数据映射为一张数据库表&#xff0c;并提供 HQL(Hive SQL)查询功能&#xff0c;最终底层将HQL语句转换为MapReduce任务的&#xff0c;底层数据是存储在 HDFS 上…

【转】【C#.NET】ASP.NET状态管理之一:Cookie

【C#.NET】ASP.NET状态管理之一:Cookie 状态管理是你对同一页或不同页的多个请求维护状态和页信息的过程。与所有基于 HTTP 的技术一样&#xff0c;Web 窗体页是无状态的&#xff0c;这意味着它们不自动指示序列中的请求是否全部来自相同的客户端&#xff0c;或者单个浏览器实例…

2.Redis数据操作

redis是key-value的数据结构&#xff0c;每条数据都是一个键值对 键的类型是字符串 注意&#xff1a;键不能重复 值的类型分为五种&#xff1a; 字符串string 哈希hash 列表list 集合set 有序集合zset string&#xff08;主要 string是redis最基本的类型 最大能存储512MB数…

天池在线编程 2020国庆八天乐 - 6. 山谷序列(DP)

文章目录1. 题目2. 解题1. 题目 https://tianchi.aliyun.com/oj/118289365933779217/122647324212270018 描述&#xff1a; 给你一个长度为 n 的序列&#xff0c;在他的子序列中让你找一个山谷序列&#xff0c;山谷序列定义为&#xff1a; 序列的长度为偶数。假设子序列的长…

向量点积(Dot Product)

http://www.evernote.com/shard/s146/sh/e0d95bd1-68df-49d9-87c8-e21647d94e18/4d7af393bd986fd0c462ebd138f494b1转载于:https://www.cnblogs.com/dyfzwj/p/3408588.html

天池在线编程 2020国庆八天乐 - 4. 生成更大的陆地(BFS)

文章目录1. 题目2. 解题1. 题目 https://tianchi.aliyun.com/oj/118289365933779217/122647324262601668 LeetCode 上也有该题 827. 最大人工岛 描述 在一个0和1的2D网格中&#xff0c;我们最多将一个0改为1。 之后&#xff0c;最大岛屿的大小是多少&#xff1f; &#xff0…

python操作MySQL 模拟简单银行转账操作

一、基础知识 1、MySQL-python的安装 下载&#xff0c;然后 pip install 安装包 2、python编写通用数据库程序的API规范 &#xff08;1&#xff09;、数据库连接对象 connection&#xff0c;建立python客户端与数据库的网络连接&#xff0c;创建方法为 MySQLdb.Connect(参数) 参…

使用data()方法缓存数据

使用data()方法缓存数据1、根据元素中的名称定义或返回存储的数据&#xff0c;其调用格式为&#xff1a;  data([name])其中&#xff0c;参数name为字符型&#xff0c;表示存储数据的名称。 2、根据元素中的名称在元素上存储或设置数据&#xff0c;其调用的格式为&#xff1a…

LeetCode 1007. 行相等的最少多米诺旋转

文章目录1. 题目2. 解题1. 题目 在一排多米诺骨牌中&#xff0c;A[i] 和 B[i] 分别代表第 i 个多米诺骨牌的上半部分和下半部分。&#xff08;一个多米诺是两个从 1 到 6 的数字同列平铺形成的 —— 该平铺的每一半上都有一个数字。&#xff09; 我们可以旋转第 i 张多米诺&a…

Hive内置函数大全

Hive内置函数大全 目录 Hive内置函数大全 1.复合类型构造函数 2 复合类型操作符 3 数值计算函数 4 日期函数 5 条件函数 6 字符串函数 7 汇总统计函数&#xff08;UDAF&#xff09; 8 表格生成函数(UDTF) 9 类型转换函数 10 数学函数 11 数学运算 12 逻辑运算 13…