超市里的货物架调整问题题解 | 豆包MarsCode AI刷题

59 阅读2分钟

超市里的货物架调整

问题描述

在一个超市里,有一个包含 nn 个格子的货物架,每个格子中放有一种商品,商品用小写字母 a 到 z 表示。当顾客进入超市时,他们会依次从第一个格子查找到第 nn 个格子,寻找自己想要购买的商品。如果在某个格子中找到该商品,顾客就会购买它并离开;如果中途遇到一个空格子,或查找完所有格子还没有找到想要的商品,顾客也会离开。

作为超市管理员,你可以在顾客到来之前重新调整商品的顺序,以便尽可能多地出售商品。当第一个顾客进入后,商品位置不能再调整。你需要计算在最优调整下,最多可以卖出多少件商品。输入变量说明:

n:货物架的格子数

m:顾客想要购买的商品种类数

s:货物架上商品的初始顺序

c:顾客想要购买的商品种类

测试样例

样例1:

输入:n = 3 ,m = 4 ,s = "abc" ,c = "abcd"

输出:3

样例2:

输入:n = 4 ,m = 2 ,s = "abbc" ,c = "bb"

输出:2

样例3:

输入:n = 5 ,m = 4 ,s = "bcdea" ,c = "abcd"

输出:4

解题思路:

问题理解

你需要在顾客到来之前重新调整商品的顺序,以便尽可能多地出售商品。每个顾客只会购买他们想要的商品中的一种,并且一旦找到就会离开。因此,我们的目标是通过重新排列商品,使得尽可能多的顾客能够找到他们想要的商品。

数据结构选择

商品频率统计:首先,我们需要统计货架上每种商品的数量,以及顾客想要购买的每种商品的数量。 商品匹配:然后,我们需要计算在当前货架上,最多可以满足多少种顾客的需求。

算法步骤

统计商品频率:

遍历货架上的商品,统计每种商品的数量。 遍历顾客想要的商品,统计每种商品的需求数量。 计算最大匹配:

对于每种顾客想要的商品,计算货架上该商品的数量与顾客需求数量的最小值。 累加这些最小值,得到最多可以满足的顾客数量。

关键点

商品的顺序调整:虽然题目允许我们调整商品的顺序,但实际上我们只需要统计商品的数量,而不需要实际调整顺序。 商品的匹配:我们只需要计算每种商品的供需匹配情况,而不需要实际模拟顾客的购买过程。

最终代码

image.png