【网易18年校招笔试题】香槟塔里倒香槟——参考代码和编程思路
- 【网易18年校招笔试题】香槟塔里倒香槟——参考代码和编程思路
- 题目描述:
- 参考案例:
- 思路分析:
- 编程思路:
- 参考代码:
- 输出:
- 结尾:
题目描述:
文章图片
文章图片
文章图片
题目描述:
节日到啦,牛牛和妞妞邀请了好多客人来家里做客。
他们摆出了一座高高的香槟塔,牛牛负责听妞妞指挥,往香槟塔里倒香槟。
香槟塔有个很优雅的视觉效果就是如果这一层的香槟满了,就会从边缘处往下一层流去。
妞妞会发出两种指令,指令一是往第x层塔内倒体积为v的香槟,指令二是询问第k层塔香摈的体积为多少。
告诉你香槟塔每层香槟塔的初始容量,你能帮牛牛快速回答妞妞的询问吗?
输入描述:
第一行 为两个整数n,m。表示香槟塔的总层数和指令条数。
第二行为n个整数ai,表示每层香槟塔的初始容量。
第三行到第2+m行有两种输入,一种输入是“2 x v" 表示往第x层倒入体积为v的香槟;
另一种输入是“1 k” 表示询问第k层当前有多少香槟。
1 <=n,m<=1000。
1 <= n,m<= 200000,1 <= ai ,v <= 10000000000
输出描述:
对于每个询问,输出一个整数,表示第x层香槟的容量。
参考案例:
参考案例1:
1 2
8
2 1 9
1 1
参考案例2:
5 4
1 2 2 10 1
1 3
2 2 5
2 4 3
1 4
思路分析:
思路分析:
1、先想办法读取输入数据,然后转换格式
2、看到案例1,可以画一个示意图:
第1层 容量:8
两个指令:
1、在第一层加9
2、第一层满了,溢出去了1
3、输出第一层的容量:8
3、案例2:
第一层 容量:1
第二层 容量:2
第三层 容量:2
第四层 容量:10
第五层 容量:1
四个指令:
1、查询第3层 输入为0(这里可以知道,刚开始里面都是为空瓶子)
2、第二层加5,第二层满了 为2 ,第三层满了 为2,第四层为1
3、第四层加3,第四层为 4
4、查询第四层,输出为 4
编程思路:
编程思路:
1、读取输入,并创建两个列表,一个是最大容量列表(读取拿到),一个是当前容量列表(设为0)
2、格式转换
3、for循环m个指令:
1、如果指令列表的元组第一个值是1,传入层数,调用指令1函数:
1、直接打印当前容量列表的对应值
2、如果指令列表的元组第一个值是2,传入层数x和体积v,调用指令2函数:
1、创建变量c为,剩余添加体积,初始值为v.
2、尝试while循环(c不为零):
1、如果(当前层数容量 + c)>最大容量:
1、c = c - (最大容量-当前容量)
2、当前层容量 = 当前层最大容量
2、如果(当前层容量 + c)<= 当前层最大容量:
1、当前层容量 += c
2、c = 0
3、如果c还没有等于0,将层数自增1
4、如果层数已经超过了n,说明已经溢出去了,结束~
参考代码:
python2.7编译器
删掉了很多print语句
first = raw_input()
print "first:",first
n,m = first.split(' ')
n = int(n)
m = int(m)r_list = raw_input().split(' ')tem = []
try:
for r in r_list:
tem.append(int(r))
except:
tem.append(int(r_list))
r_list = temdef order1(k):
print x_list[k-1]def order2(x,v):
c = v
try:
while(c>0 and x <= n):
if(x_list[x-1]+v<=r_list[x-1]):
x_list[x-1] += v
c = 0
else:
c = c - (r_list[x-1]-x_list[x-1])
x_list[x-1] = r_list[x-1]
x += 1
except:
c = 0
print "可能最后一层都满了"order = []
for i in range(m):
order.append(raw_input().split(" "))x_list = [0]*len(r_list)for o in order:
if(int(o[0])==1):
order1(int(o[1]))
elif(int(o[0])==2):
order2(int(o[1]),int(o[2]))
else:
print "输错了~"
输出:
5 4
first: 5 41 2 2 10 1
n: 5
m: 4
['1', '2', '2', '10', '1']1 32 2 52 4 31 3
命令1的输出
0
命令1的输出
2
【Python|【网易2019年秋招笔试题】编程题第二题(香槟塔里倒香槟——参考代码和编程思路)】
文章图片
结尾: 自己只是简单地测试了一下两个案例,并没有提交到系统,并不知道会不会对所有的输入有效。
如果有大佬发现其中有错误,欢迎批评指教~
推荐阅读
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- Python绘制小红花
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- python|8. 文件系统——文件的删除、移动、复制过程以及链接文件
- 爬虫|若想拿下爬虫大单,怎能不会逆向爬虫,价值过万的逆向爬虫教程限时分享
- 分布式|《Python3网络爬虫开发实战(第二版)》内容介绍
- java|微软认真聆听了开源 .NET 开发社区的炮轰( 通过CLI 支持 Hot Reload 功能)