通过率 61% · 提交 182 · 通过 111
小慕最近在参与一个开源社区的运营工作,社区希望整理一份近期热度较高的开源项目榜单,推荐给其他开发者。 对于每个开源项目,开发者可以进行关注(watch)、收藏(star)、fork、提 issue、提交合并请求(MR)等操作。数据库中已统计了每个项目在这五个维度上的数量,项目的热度根据这五个维度的来计算。 榜单按照从高到低排序,如果热度值相同,则按照项目名称转换为全小写字母后的进行排序。
这类题属于华为 OD 机考真题方向中「100分 / 排序」方向的高频题型,通常考察对「100分 / 排序」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
提示:带虚线的词点一下有通俗解释。
第一行输入为 N,表示开源项目的个数,0 < N < 100。
第二行输入为权重值列表,一共 5 个整型值,分别对应关注、收藏、fork、issue、MR 的权重,权重取值 0 < M ≤ 50。
第三行开始接下来的 N 行为开源项目的统计维度,每一行的格式为:
name nr_watch nr_star nr_fork nr_issue nr_mr
其中 name 为开源项目的名字,由英文字母组成,长度 ≤50,其余 5 个整型值分别为该开源项目关注、收藏、fork、issue、MR 的数量,数量取值 0 < nr ≤ 1000。
按照热度降序,输出开源项目的名字,对于热度值相等的,按照项目名字转换为全小写字母后的字典序排序
示例 1
输入示例
4 8 6 2 8 6 camila 66 70 46 158 80 victoria 94 76 86 189 211 anthony 29 17 83 21 48 emily 53 97 1 19 218
输出示例
victoria camila emily anthony
排序热度值计算: camila: 668 + 706 + 462 + 1588 + 806 = 2784 victoria: 948 + 766 + 862 + 1898 + 2116 = 4158 anthony: 298 + 176 + 832 + 218 + 486 = 956 emily: 538 + 976 + 12 + 198 + 2186 = 2468 根据热度值降序,得到结果。
示例 2
输入示例
5 5 6 6 1 2 camila 13 88 46 26 169 grace 64 38 87 23 103 lucas 91 79 98 154 79 leo 29 27 36 43 178 ava 29 27 36 43 178
输出示例
lucas grace camila ava leo
时间限制 1000 ms · 内存限制 128 MB
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。
排序热度值计算: camila: 135 + 886 + 466 + 261 + 1692 = 1233 grace: 645 + 386 + 876 + 231 + 1032 = 1299 lucas: 915 + 796 + 986 + 1541 + 792 = 1829 leo: 295 + 276 + 366 + 431 + 1782 = 922 ava: 295 + 276 + 366 + 431 + 178*2 = 922 根据热度值降序,对于 leo 和 ava,热度值相等,按照字典序,ava 排在 leo 前面,得到结果。
© 2026 广州慕课网络科技有限公司 · 吴师兄学算法官网 版权所有