荣耀面试题,送伞的最小时间

编程入门 行业动态 更新时间:2024-10-09 08:34:21

<a href=https://www.elefans.com/category/jswz/34/1767204.html style=荣耀面试题,送伞的最小时间"/>

荣耀面试题,送伞的最小时间

面试荣耀,一个算法题,很简单,当时竟然没给写出来。ε=(´ο`*)))唉,大意了,大意了,没有闪。

题目

部门聚餐,下大雨,要将所有人从食堂运到办公室。
现在由大伞和小伞,小伞一次撑2个人,大伞一次撑3个人
在最开始时食堂的人有一把小伞,办公室里有n把小伞,m把大伞。
从办公室到食堂的往返时间为2小伞,去1h,回1h。
每个人一次只能带一把伞。
求所有人回到办公室的最短时间。
输入:
一个数字T,T组数据
每组为c n m,代表人数,小伞数,大伞数
测试用例:
2
1 1 1
3 1 1

c=11 n=1 m=2 标答为9
我的答案是5

public static int sendUmbrella(int c, int n, int m) {int leftNum = 0; //已经离开的人数,到达办公室人数。int smallUmbrella = 1; //食堂里有的小伞数量int bigUmbrella = 0; //食堂里有的小伞数量int costHour = 0;while (true) {leftNum += smallUmbrella * 2 + bigUmbrella * 3;costHour++;if (leftNum >= c) {break;}if ( (leftNum * 2) <= m){//大伞很充足,所有的人都带不完,看有多少人,就带多少伞bigUmbrella = leftNum *2;}else{// 大伞不足,依据有多少大伞就带多少bigUmbrella = m;if ((leftNum * 2) <= n+m+1){//小伞很充足,所有的人都带不完,看有多少人就带多少伞smallUmbrella = (leftNum * 2 ) - m;}else{//小伞也不足,依据有多少伞就带多少smallUmbrella = n+1;}}costHour++;leftNum = leftNum - (bigUmbrella+smallUmbrella)/2;}return costHour;}

更多推荐

荣耀面试题,送伞的最小时间

本文发布于:2024-02-16 22:39:09,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1691697.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:荣耀   最小   面试题   时间

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!