目录

题目

思路

Code


题目

老李是货运公司承运人,老李的货车额定载货重量为 wt。现有两种货物、货物 A 单件重量为 wa ,单件运费利为 pa,货物 B 单件重量为 wb,单件运费利润为 pb.老李每次发车时载货总重量刚好为货车额定的载货重量 wt,车上必须同时有货物 A 和货物 B,货物 A、B 不可切割。老李单车次满载运输可获得的最高利润是多少?

输入描述
第一列输入为货物 A的单件重量 wa,0 < wa< 10000

第二列输入为货物 B的单件重量 wb, 0 < wb < 10000

第三列输入为货车的额定载重 wt, 0 < wt < 100000

第四列输入为货物 A 的单件运费利 pa, 0 < pa < 1000

第五列输入为货物 B 的单件运费利润 pb, 0 < pb< 1000
输出描述
单次满载运输的最高利润

示例1:
输入

10 8 36 15 7
输出
44
示例2:
输入

1 1 2 1 1
输出
2

思路

1:一开始看着感觉好像需要用动态规划,或者贪心的思维,但是转念一想,其实【只有两种货物】,并且【载货总重量刚好为货车额定的载货重量 wt】,AB必须同时存在。

2:那么我们直接一个循环,先选择只载一种货物的数量(从1 开始),然后逐渐递增,每一轮找出对应需要的另一种货物的数量,并算出利润。在循环中找到最大利润即可。

编辑

Code

# coding:utf-8
#JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。 
import functools
import sys
from collections import Counter, defaultdict
import copy
from itertools import permutations
import re
import math
import sys
from queue import Queue

params = [int(x) for x in input().split(" ")]
wa = params[0]
wb = params[1]
pa = params[3]
pb = params[4]
wt = params[2] 

count = 1
result = 0

i=0
while(True):
    if(wa*count + wb >wt):
        print(result)
        break
    else :
        total_b_weight = wt - count * wa
        if(total_b_weight % wb == 0):
            result = max(result, count*pa + pb*(total_b_weight/wb))
    count +=1
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.


【华为od机试真题Python+JS+Java合集】【超值优惠】:Py/JS/Java合集

【华为od机试真题Python】:Python真题题库

【华为od机试真题JavaScript】:JavaScript真题题库

【华为od机试真题Java】:Java真题题库

【华为od机试真题C++】:C++真题题库

【华为od机试真题C语言】:C语言真题题库

【华为od面试手撕代码题库】:面试手撕代码题库

【华为od机试面试交流群:830285880】