(C语言)华为OD机考:统一考试 C卷 + D卷 + B卷 +A卷
目前在考C卷,经过两个月的收集整理,C卷真题已整理完毕
抽到原题的概率为2/3到3/3,也就是最少抽到两道原题。请注意:大家刷完C卷真题,最好要把B卷的真题刷一下,因为C卷的部分真题来自B卷。
真题目录:【C语言题解版】华为 OD 机试 C卷抽中题库清单(全真题库)含考点说明
专栏:(C语言)最新华为OD机试C卷+D卷+AB卷
题目描述
在一款虚拟游戏中生活,你必须进行投资以增强在虚拟游戏中的资产以免被淘汰出局。
现有一家Bank,它提供有若干理财产品 m 个,风险及投资回报不同,你有 N(元)进行投资,能接收的总风险值为X。
你要在可接受范围内选择最优的投资方式获得最大回报。
备注:
- 在虚拟游戏中,每项投资风险值相加为总风险值;
- 在虚拟游戏中,最多只能投资2个理财产品;
- 在虚拟游戏中,最小单位为整数,不能拆分为小数;
- 投资额*回报率=投资回报
输入描述
第一行:
-
产品数(取值范围[1,20])
-
总投资额(整数,取值范围[1, 10000])
-
可接受的总风险(整数,取值范围[1,200])
第二行:产品投资回报率序列,输入为整数,取值范围[1,60]
第三行:产品风险值序列,输入为整数,取值范围[1, 100]
第四行:最大投资额度序列,输入为整数,取值范围[1, 10000]
输出描述
每个产品的投资额序列
用例
输入 | 5 100 10 10 20 30 40 50 3 4 5 6 10 20 30 20 40 30 |
---|---|
输出 | 0 30 0 40 0 |
说明 | 投资第二项30个单位,第四项40个单位,总的投资风险为两项相加为4+6=10 |
解题思路
在满足总风险不超过容忍度和总投资额不超过预算的前提下,通过遍历选择单个或两个理财产品的组合来最大化投资回报。
伪代码如下:
- 初始化