华为OD机试 C++【宝石数量】 痛定思痛。 2024-04-24 06:14 28阅读 0赞 ### 题目 ### 橱窗里有一排宝石,不同的宝石对应不同的价格,宝石的价格标记为 gems\[i\](0 ≤ i < n,n = gems.length) 宝石可同时出售0个或多个,如果同时出售多个,则要求出售的宝石编号连续; 例如客户最大购买宝石个数为m,购买的宝石编号必须为:gems\[i\],gems\[i+1\],…,gems\[i+m-1\](0 ≤ i < n,m ≤ n) 假设你当前拥有总面值为 value 的钱,请问最多能购买到多少个宝石,如无法购买宝石,则返回0。 输入描述 第一行输入n,参数类型为int,取值范围:\[0,10^6\],表示橱窗中宝石的总数量。 之后 n 行分别表示从第0个到第n-1个宝石的价格,即 gems\[0\] 到 gems\[n-1\] 的价格,类型为int,取值范围:(0,1000\]。 之后一行输入v,类型为int,取值范围:\[0,10^9\],表示你拥有的钱。 输出描述 输出int类型的返回值,表示最大可购买的宝石数量。 用例: 输入 7 8 4 6 3 1 6 7 10 输出 3 说明 gems = [8,4,6,3,1,6,7], value = 10 最多购买的宝石为gems[2]至gems[4]或者gems[3]至gems[5] ### 解题思路 ### 首先定义一个滑动窗口,初始时窗口左右边界都为0。然后右边界逐步向右移动,每次
还没有评论,来说两句吧...