酷代码 AI
菜单

有 N 位同学获得了奖学金,现要从中选出两位代表上台领奖。出于“审美”要求,希望选出的两位代表 A 和 B 满足:A 的身高比 B 高,A 获得的奖学金比 B 多,且奖学金的差额大于 M。 请计算选取上台同学的方案数。 输入 第一行包含两个正整数 N 和 M; 第二行包含 N 个正整数 Si,分别代表第 i 位同学获得的奖学金。输入顺序在前的同学身高较高。 输出 输出一个正整数,表示方案数。 样例输入 复制 6 2 6 5 4 3 2 1 样例输出 复制 6 提示 100%的数据满足: 1<= N<= 100000,1<= M<= 100000,1<= Si<= 100000。 来源/分类

以下是使用 Python 语言解决该问题的代码: ```python # 读取输入数据 n, m = map(int, input().split()) scholarships = list(map(int, input().split())) # 初始化方案数为 0 count = 0 # 遍历所有可能的组合 for i in range(n): for j in range(i + 1, n): # 检查是否满足条件 if scholarships[i] - scholarships[j] > m: count = count + 1 # 输出方案数 print(count) ``` 代码解释: 1. 输入读取:首先读取输入的两个整数 `n` 和 `m`,分别表示同学的数量和奖学金的差额要求。然后读取一行整数,存储在列表 `scholarships` 中,代表每位同学获得的奖学金。 2. 初始化方案数:将方案数 `count` 初始化为 0。 3. 遍历所有可能的组合:使用两层循环遍历所有可能的同学组合。外层循环控制第一个同学的索引 `i`,内层循环控制第二个同学的索引 `j`,且 `j` 从 `i + 1` 开始,确保第一个同学的身高比第二个同学高。 4. 检查条件:对于每一对同学,如果第一个同学的奖学金减去第二个同学的奖学金大于 `m`,则满足条件,将方案数 `count` 加 1。 5. 输出结果:最后输出方案数 `count`。 复杂度分析: - 时间复杂度:代码使用了两层嵌套循环,因此时间复杂度为 $O(n^2)$,其中 $n$ 是同学的数量。 - 空间复杂度:代码只使用了常数级的额外空间,因此空间复杂度为 $O(1)$。 [2025-12-13 10:54:48 | AI问答 | 406点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多