You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Python实现符合筛选规则的笔记本电脑选择算法

笔记本电脑筛选逻辑实现

需求回顾

  • 规则1:若某台笔记本的CPU速度、RAM容量、硬盘容量均低于另一台,则该笔记本视为过时,不纳入选购范围
  • 规则2:在未被淘汰的笔记本中,选择价格最低的,输出其输入时的序号(从1开始)

修正并补全后的完整代码

N = int(input())
# 存储每台笔记本的信息:(cpu, ram, harddisk, price, 序号)
laptops = []
for idx in range(1, N+1):
    cpu, ram, hd, price = map(int, input().split())
    laptops.append((cpu, ram, hd, price, idx))

# 筛选未被淘汰的笔记本
valid_laptops = []
for laptop in laptops:
    cpu1, ram1, hd1, _, _ = laptop
    # 标记是否被淘汰
    is_obsolete = False
    for other in laptops:
        cpu2, ram2, hd2, _, _ = other
        # 如果存在另一台笔记本的三项配置都更高,则当前笔记本过时
        if cpu2 > cpu1 and ram2 > ram1 and hd2 > hd1:
            is_obsolete = True
            break
    if not is_obsolete:
        valid_laptops.append(laptop)

# 在有效列表中找价格最低的,若有多个价格相同,取最先输入的(序号小的)
valid_laptops.sort(key=lambda x: (x[3], x[4]))
print(valid_laptops[0][4])

代码说明

  1. 存储结构优化:把每台笔记本的4项参数加上序号存入元组,再统一放入列表,相比原代码的二维列表结构,更直观易读,后续处理也更方便。
  2. 淘汰逻辑实现:对每台笔记本,遍历其他所有笔记本,只要存在任意一台的CPU、RAM、硬盘配置都比它高,就标记为过时并终止当前判断。
  3. 选择最优笔记本:对有效笔记本列表,先按价格升序排序,价格相同时按序号升序(保证选最先输入的),直接取第一个元素的序号输出即可。

关于复杂度的说明

这里是两层循环(外层遍历每台笔记本,内层遍历其他笔记本),时间复杂度为O(N²),对于常规的笔记本选购数量(N不会特别大)来说完全够用。如果追求更优的复杂度,可以先对笔记本按某一配置排序后优化判断,但对于大多数场景,当前实现的简洁性和可读性更重要。

内容的提问来源于stack exchange,提问作者minoisfree

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 09:05:41