您当前的位置: 首页 >  华为

TechGuide

暂无认证

  • 4浏览

    0关注

    176博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

华为秋招机试三道编程题(2021-08-18)

TechGuide 发布时间:2021-08-19 00:07:39 ,浏览量:4

恭喜发现宝藏!微信搜索公众号【TechGuide】关注更多新鲜好文和互联网大厂的笔经面经。 作者@TechGuide【全网同名】 点赞再看,养成习惯,您动动手指对原创作者意义非凡🤝

文章目录
  • 提示
  • 第一道:喜爱值最大(100%)
    • 题目描述
    • 参考代码:
      • Python版本(90%)
      • CPP版本
  • 第二道: 商品综合(100%)
    • 题目描述
    • 参考代码
  • 第三道:连连看
    • 题目描述
    • 参考代码

提示
  1. 华为最后一次机试在8月25日
  2. 满100分即有面试机会,不必过于纠结分数
第一道:喜爱值最大(100%) 题目描述

第一行:输入总金钱money,商品数量n 此后的n行:(每行代表一个商品,数值分别代表,商品价格、商品可买数量、商品喜爱值) 商品价格 商品数量 商品喜爱值 p1 n1 like1 p2 n2 like2 … 问:如何购买能让喜爱值最大

参考代码: Python版本(90%)

贪心

# priority代表性价比高如果喜爱值/价格越高则选择优先级最高优先购买
money,kind_num = [int(x) for x in input().split(]
price = [0] * kind_num
nUm = [0] * kind_num
like = [0] * kind_num
priority = [0] * kind_num
for i in range(kind. num):
	price[i], num[i], like[i] = [int(x) for x in input().split()] 
	priority[i] = Like[i] / price[i]

#按照优先级高的倒序取出idx方便遍历
sort_result = sorted(enumerate(priority),key=lambda x: x[1], reverse=True) 
sorted_ idx = [x[0] for x in sort_result]
ans=0

for idx in sorted_idx:
#选取了优先级高的

	price_one = price[idx]
	num_one = num [idx]
	like_one = like [idx]
	num_can_buy = max(0, math.floor(money/price_one)
	if num_can_buy == 0:
		continue
	elif num_can_buy > X >> N;
 vector food(N, vector(3, 0));
 for (int i = 0; i > food[i][0] >> food[i][1] >> food[i][2];
 }
 // 01背包问题 dp[x]表示选取X元零食可达到的最大喜爱度
 vector dp(X + 1, 0);
 for (int i = 0; i             
关注
打赏
1665329535
查看更多评论
0.0473s