【华为OD】2024年C、D卷真题集:最新的真题集题库 C/C++/Java/python/JavaScript
【华为OD】2024年C、D卷真题集:最新的真题集题库 C/C++/Java/python/JavaScript-CSDN博客
C、java、python、JS、C++代码实现:
【华为OD】D卷真题100分: 生日礼物 C语言代码实现-CSDN博客
【华为OD】D卷真题100分: 生日礼物 Java代码实现-CSDN博客
【华为OD】D卷真题100分: 生日礼物 python代码实现-CSDN博客
【华为OD】D卷真题100分: 生日礼物 JavaScript代码实现-CSDN博客
【华为OD】D卷真题100分: 生日礼物 C++代码实现-CSDN博客
题目描述:
小牛的孩子生日快要到了,他打算给孩子买蛋糕和小礼物,蛋糕和小礼物各买一个,他的预算不超过x元。蛋糕cake和小礼物gift都有多种价位的可供选择。
请返回小牛共有多少种购买方案。
输入描述
第一行表示cake的单价,以逗号分隔
第一行表示gift的单价,以逗号分隔
第三行表示x预算
输出描述
输出数字表示购买方案的总数
示例1
输入输出示例仅供调试,后台判题数据一般不包含示例
输入
10,20,5
5,5,2
15
输出
6
说明
解释:小牛有6种购买方案,所选蛋糕与所选礼物在数组中对应的下标分别是:
第1种方案:cake [0] + gift [0] = 10 + 5 = 15;
第2种方案:cake [0] + gift [1] = 10 + 5 = 15;
第3种方案:cake [0] + gift [2] = 10 + 2 = 12;
第4种方案:cake [2] + gift [0] = 5 + 5 = 10;
第5种方案:cake [2] + gift [1] = 5 + 5 = 10;
第6种方案:cake [2] + gift [2] = 5 + 2 = 7。
备注
1 <= cake.length <= 10^5
1 <= gift.length <= 10^5
1 <= cake[i],gift[i] <= 10^5
1 <= x <= 2*10^5
wumu1024
+---+
3 | | ++ + +---|
| | | 3 + 6 + | + | +
| + | | + + + | + | +
| + | +---+ + + +++++ + + + | +
| + | + | + +----+ | | + + + | +
| + 3 | + | + + + 2 | | 2 + + + | +
| + | + | + + + | | + + + | +
| +---+ + | | | + ----+ | +---+ | | + | +
| | + | | | + | | | | | | + | +
| 1 | + | 8 | | + 1 | | | 1 | | 1 | | + | +
| | + | | | + | | | | | | | + | +
| +---+ + +---+ | ++---+ ++ +---+ +---+ | + | +
| | + | | | ++ | | |+ | +
|0 | + | 0 | 0 | ++ | 0 | |+ | +
| | + | | | ++ | | |+ | +
+---+ + +-------+ +---+| +|+ | +
+ + | +
0 1 2 3 4 5 6 7 8 9 10 11 12 + v: w u m u 1 0 2 4
题目解析:
按输入的2个数组,分别组合一下,只要2个和小于等于目标值,即可得到一种可能,然后累计结果即可
代码实现:
import re
if __name__ == '__main__':
s1 = input()
s2 = input()
cake = [int(i) for i in re.findall(r'\d+', s1)]
gift = [int(i) for i in re.findall(r'\d+', s2)]
x = int(input())
cnt = 0
for i in range(len(cake)):
for j in range(len(gift)):
if cake[i] + gift[j] <= x:
cnt += 1
print(cnt)