
专业级初级题库 专业级高级题库 在线练习
❀ 专 业 级 初 级 题 库(共12题)❀ 返回最前
试题1:运动会积分榜生成系统
【题目描述】
学校运动会中,两个班级进行多轮比赛,每轮比赛得分累加。请编写一个程序,输入两个班级的当前得分,自动生成积分榜并显示分差柱状图。
【题目要求】
- 输入两个整数,分别代表一班和二班的当前得分。
- 计算两班分差的绝对值。
- 输出积分榜,格式如下:
- 第一行:“最新积分榜:”
- 第二行:“一班:” + 若干个“★”(数量为一班得分)
- 第三行:“二班:” + 若干个“☆”(数量为二班得分)
- 第四行:“分差柱:” + 若干个“|”(数量为分差绝对值)
- 程序应使用
abs()计算分差,并使用字符串乘法生成柱状图。
【输出示例】
一班得分:12 二班得分:8 最新积分榜: 一班:★★★★★★★★★★★★ 二班:☆☆☆☆☆☆☆☆ 分差柱:||||
试题2:智能收银系统
【题目描述】
商店实行促销政策:单笔订单总价超过100元可享9折优惠。请编写一个收银程序,根据输入的书本价格和文具价格计算实付金额,并根据用户支付金额计算找零。
【题目要求】
- 输入两个浮点数,分别代表书本价格和文具价格。
- 计算商品总价,若总价 > 100,则实付金额 = 总价 × 0.9,否则实付金额 = 总价。
- 输入用户支付金额(浮点数)。
- 输出商品总价、实付金额、支付金额和找零金额,金额保留两位小数。
- 使用条件表达式(if-else)实现折扣判断。
【题目说明】
书本价格:50
文具价格:100
收取金额:200
【输出示例】
书本价格:50
文具价格:100
==================
商品总价:150元
实付金额:135.00元
收取金额:200元
找零:65.00元
试题3:过山车乘坐安全检测系统
【题目描述】
游乐场规定:10岁及以上且身高 ≥ 150cm,或10岁以下且身高 ≥ 140cm 的儿童可乘坐过山车。请编写程序,根据输入的年龄和身高判断是否符合乘坐标准。
【题目要求】
- 输入两个整数:年龄(岁)、身高(cm)。
- 判断是否符合上述安全标准。
- 若符合,输出“符合过山车乘坐标准”;否则输出“安全第一,请选择其他项目”。
- 使用逻辑运算符(and、or)组合判断条件。
【输出示例】
年龄:12
身高:155
请输入年龄:12
请输入身高:155
符合过山车乘坐标准
年龄:9
身高:130
请输入年龄:9
请输入身高:130
安全第一,请选择其它项目。
试题4:交通工具智能推荐系统
【题目描述】
根据出行距离和当前天气,智能推荐最适合的交通工具,规则如下:
- 距离 < 1公里:建议步行
- 1公里 ≤ 距离 < 3公里:雨天乘公交,否则骑共享单车
- 3公里 ≤ 距离 < 10公里:晴天乘新能源公交,否则乘室内候车公交
- 距离 ≥ 10公里:建议乘坐地铁
【题目要求】
- 输入一个浮点数(距离,单位:公里)和一个字符串(天气,可选“晴”“雨”“雪”)。
- 根据上述规则输出推荐交通工具的提示语。
- 使用多分支结构(if-elif-else)实现。
【输出示例】
请输入目的地距离(公里): 2.5
当前天气(晴/雨/雪): 雨
雨天路滑,乘公交
请输入目的地距离(公里): 4
当前天气(晴/雨/雪): 晴
乘新能源公交
请输入目的地距离(公里): 12
当前天气(晴/雨/雪): 晴
乘坐地铁
试题5:智能导诊分诊系统
【题目描述】
医院门诊需要根据患者症状和疼痛等级进行智能分诊,规则如下:
- 若有“发烧”症状且疼痛等级 > 7分 → 急诊优先
- 若有“呼吸困难”症状 → 呼吸科优先就诊
- 若有“骨折”症状 → 骨科挂号
- 其他情况 → 普通内科预检分诊
【题目要求】
- 输入一串症状,用逗号分隔(如“发烧,头痛,咳嗽”)。
- 输入疼痛等级(1-10整数)。
- 根据上述规则输出就诊建议。
- 使用
split()分割症状字符串,使用in判断症状关键词。
【题目说明】
示例1:
输入:症状(用逗号分隔):发烧,头痛
疼痛等级(1-10):8
输出:急诊优先:发热伴剧烈疼痛
示例2:
输入:症状(用逗号分隔):咳嗽,呼吸困难
疼痛等级(1-10):5
输出:紧急通道:呼吸科优先就诊
示例3:
输入:症状(用逗号分隔):脚踝肿胀
疼痛等级(1-10):6
输出:请到普通内科预检分诊
【输出示例】
症状(用逗号分隔):发烧,头痛
疼痛等级(1-10):8
急诊优先:发热伴剧烈疼痛
症状(用逗号分隔):咳嗽
疼痛等级(1-10):5
紧急通道:呼吸科优先就诊
症状(用逗号分隔):脚踝肿胀
疼痛等级(1-10):6
请到普通内科预检分诊
试题6:智能三角形分类器
【题目描述】
输入三角形的三条边长,判断其类型:
- 非三角形:任意两边之和 ≤ 第三边
- 等边三角形:三边相等
- 等腰三角形:至少两边相等
- 直角三角形:满足勾股定理(a² + b² = c²)
- 普通三角形:其他情况
【题目要求】
- 输入三个浮点数(用空格分隔),代表三边长度。
- 对三边进行排序,确保判断逻辑一致。
- 根据上述规则输出三角形类型。
- 使用
sorted()排序和勾股定理判断。
【输出示例】
输入三边长度(空格分隔):3 4 5
直角三角形(勾股定理成立)
输入三边长度(空格分隔):5 5 5
完美等边三角形
输入三边长度(空格分隔):2 2 2
等腰三角形(两边相等)
输入三边长度(空格分隔):1 2 4
非三角形!两边之和需大于第三边
试题7:月球登陆轨迹模拟器
【题目描述】
你是一名航天工程师,正在模拟月球登陆器的降落过程。飞船初始高度为1000米,受月球重力加速度(1.625 m/s²)影响不断加速下坠。程序需要每秒更新高度与速度数据,并在高度归零时判断着陆结果:若最终速度小于15 m/s则软着陆成功,否则判定为坠毁。
【题目要求】
- 使用while循环模拟每秒的高度与速度变化,直到高度≤0
- 物理计算规则:
- 每秒钟速度增加1.625 m/s(月球重力加速度)
- 每秒钟高度减少当前速度值(即速度=每秒下降距离)
- 每秒输出格式:”时间:{time}秒 高度:{height}米 速度:{velocity}m/s”
- 高度归零后,判断最终速度:
- 若velocity < 15,输出”着陆完成!”
- 否则,输出”着陆失败!”
- 所有数值保留1位小数
【输出示例】
时间:0秒 高度:1000米 速度:0m/s
时间:1秒 高度:998.4米 速度:1.6m/s
时间:2秒 高度:995.1米 速度:3.2m/s
时间:3秒 高度:990.2米 速度:4.9m/s
时间:4秒 高度:983.8米 速度:6.5m/s
时间:5秒 高度:975.6米 速度:8.1m/s
时间:6秒 高度:965.9米 速度:9.8m/s
时间:7秒 高度:954.5米 速度:11.4m/s
时间:8秒 高度:941.5米 速度:13.0m/s
时间:9秒 高度:926.9米 速度:14.6m/s
时间:10秒 高度:910.6米 速度:16.2m/s
时间:11秒 高度:892.8米 速度:17.9m/s
时间:12秒 高度:873.2米 速度:19.5m/s
时间:13秒 高度:852.1米 速度:21.1m/s
时间:14秒 高度:829.4米 速度:22.8m/s
着陆失败!
试题8:超市收银台模拟器
【题目描述】
模拟超市收银流程:循环输入商品价格,输入“-1”结束。计算总价后应用优惠:
- 总价满100元减10元
- 随机生成会员折扣(8~9折)
- 计算含税金额(税率6%)
【题目要求】
- 使用
while循环读取价格,直到输入“-1”。 - 计算总价后应用上述优惠。
- 输出小票明细,包括商品总额、折扣、优惠、税费和应付总额。
- 金额保留两位小数。
【输出示例】
请输入商品价格(结束输入-1): 45.5 请输入商品价格(结束输入-1): 60.0 请输入商品价格(结束输入-1): -1 商品总额: ¥105.50 会员折扣: 85% → ¥89.68 满减优惠: -¥10.00 税费 (6%): ¥4.78 应付总额: ¥84.46
试题9:九九乘法表(标准版与三角版)
【题目描述】
编写程序输出两种格式的九九乘法表:
- 标准版:完整的9×9乘法表
- 三角无重复版:只输出下三角部分(避免重复)
【题目要求】
- 使用两层嵌套循环实现。
- 标准版每行输出9个算式,三角版每行输出列数 ≤ 行数。
- 算式格式为“a×b=c”,c占2位右对齐。
- 两种版本之间用空行分隔。
【输出示例】
【标准版】
1×1= 1 1×2= 2 1×3= 3 1×4= 4 1×5= 5 1×6= 6 1×7= 7 1×8= 8 1×9= 9
2×1= 2 2×2= 4 2×3= 6 2×4= 8 2×5=10 2×6=12 2×7=14 2×8=16 2×9=18
3×1= 3 3×2= 6 3×3= 9 3×4=12 3×5=15 3×6=18 3×7=21 3×8=24 3×9=27
4×1= 4 4×2= 8 4×3=12 4×4=16 4×5=20 4×6=24 4×7=28 4×8=32 4×9=36
5×1= 5 5×2=10 5×3=15 5×4=20 5×5=25 5×6=30 5×7=35 5×8=40 5×9=45
6×1= 6 6×2=12 6×3=18 6×4=24 6×5=30 6×6=36 6×7=42 6×8=48 6×9=54
7×1= 7 7×2=14 7×3=21 7×4=28 7×5=35 7×6=42 7×7=49 7×8=56 7×9=63
8×1= 8 8×2=16 8×3=24 8×4=32 8×5=40 8×6=48 8×7=56 8×8=64 8×9=72
9×1= 9 9×2=18 9×3=27 9×4=36 9×5=45 9×6=54 9×7=63 9×8=72 9×9=81
【三角无重复版】
1×1= 1
1×2= 2 2×2= 4
1×3= 3 2×3= 6 3×3= 9
1×4= 4 2×4= 8 3×4=12 4×4=16
1×5= 5 2×5=10 3×5=15 4×5=20 5×5=25
1×6= 6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=36
1×7= 7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49
1×8= 8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64
1×9= 9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81
试题10:智能库存管理系统
【题目描述】
超市商品按类别存储,每类商品包含名称、价格、库存量。请实现以下功能:
- 输出库存低于15件的商品及类别
- 统计每类商品的总价值和种类数
- 查询指定价格区间内的商品
【题目要求】
- 使用字典嵌套列表存储商品数据。
- 遍历所有商品,输出低库存预警。
- 计算每类商品总价值(单价 × 库存量)。
- 输入最低价和最高价,输出该区间内所有商品。
- 使用两层循环遍历字典和列表。
【题目说明】
products = {
"水果": [["苹果", 5.8, 50], ["香蕉", 3.5, 30]],
"文具": [["笔记本", 10.0, 20], ["铅笔", 2.5, 100]],
"饮品": [["牛奶", 4.5, 15], ["果汁", 6.0, 10]]
}
【输出示例】
低库存商品(<15):
饮品类 - 果汁: 仅剩10件
分类统计:
水果: 2种商品,总价值395.00元
文具: 2种商品,总价值450.00元
饮品: 2种商品,总价值127.50元
价格在3-6元之间的商品:
苹果 - 5.80元
香蕉 - 3.50元
牛奶 - 4.50元
果汁 - 6.00元
试题11:智能班级管理系统
【题目描述】
班主任需要一个功能完善的班级管理系统,用于存储学生的基本信息(学号、姓名、电话)和数学成绩,并提供多维度的查询与统计分析功能。
【题目要求】
- 使用嵌套字典存储学生信息,数据结构示例如下:
students = {
"001": {"name": "小明", "phone": "13800138000", "score": 85},
"002": {"name": "小红", "phone": "13900139000", "score": 92},
"003": {"name": "小刚", "phone": "13700137000", "score": 78},
"004": {"name": "小丽", "phone": "13600136000", "score": 90},
"005": {"name": "小强", "phone": "13500135000", "score": 62}
}
- 系统需实现以下功能:
- 按学号查询学生完整信息
- 按成绩区间筛选学生(输入最低分和最高分)
- 显示班级成绩统计:平均分、最高分、最低分、各分数段人数
- 分数段划分规则:
- 优秀(≥90分)
- 良好(80-89分)
- 中等(70-79分)
- 及格(60-69分)
- 不及格(<60分)
- 系统应采用菜单式交互界面,循环运行直到用户选择退出
【输出示例】
=== 智能班级管理系统 ===
1. 按学号查询学生信息
2. 按成绩区间筛选学生
3. 显示班级成绩统计
4. 退出系统
请输入选项(1-4): 3
=== 班级成绩统计 ===
平均分: 81.4
最高分: 92 最低分: 62
分数段分布:
优秀(≥90): 2人
良好(80-89): 1人
中等(70-79): 1人
及格(60-69): 1人
不及格(<60): 0人
=== 智能班级管理系统 ===
1. 按学号查询学生信息
2. 按成绩区间筛选学生
3. 显示班级成绩统计
4. 退出系统
请输入选项(1-4): 4
感谢使用班级管理系统,再见!
试题12:素数检测与输出系统
【题目描述】
编写一个函数,接收起始值和结束值,输出该范围内的所有素数,并统计个数。
【题目要求】
- 定义辅助函数
is_prime(num),判断是否为素数(只需检查到√num)。 - 主函数
print_primes_in_range(start, end)遍历区间并调用判断函数。 - 输出所有素数,每行最多5个,最后输出总数。
- 素数定义:大于1,且只能被1和自身整除。
【输出示例】
10到30之间的素数有: 11 13 17 19 23 29 共找到6个素数
❀ 专 业 级 高 级 题 库(共30题)❀ 返回最前
试题1:玩具积木塔搭建
【题目描述】
玩具积木塔可以用栈来模拟,每次只能从塔顶添加或拿走积木,体现了后进先出的特性。请实现一个程序,模拟以下操作:
- 初始化一个空积木塔(空栈)。
- 依次往塔顶添加积木:红色积木、蓝色积木、绿色积木。
- 查看当前塔顶积木。
- 从塔顶拿走一块积木(并输出拿走的积木)。
- 再拿走一块积木。
- 尝试从空塔拿走积木时,进行错误处理。
【题目要求】
编写程序,按照上述顺序执行操作,并输出每一步的结果。要求使用列表模拟栈,利用append()实现压栈,pop()实现弹栈,并正确处理空栈情况。输出格式请严格参照示例。
【输出示例】
初始积木塔: [] 添加三块积木后: ['红色积木', '蓝色积木', '绿色积木'] 当前塔顶积木: 绿色积木 拿走了: 绿色积木, 剩余积木: ['红色积木', '蓝色积木'] 又拿走了: 蓝色积木, 剩余积木: ['红色积木'] 积木塔已经空了,不能再拿了!
试题2:智能家居设备响应优先级
【题目描述】
设计一个智能家居任务管理系统,每个设备任务包含设备描述和优先级(数值越小优先级越高)。系统需要支持添加任务、执行最高优先级任务、动态调整任务优先级。请使用优先队列(最小堆)实现。
初始任务如下:
- 添加任务:”空调: 调节至26℃”,优先级2
- 添加任务:”灯光: 切换温馨模式”,优先级3
- 添加任务:”音箱: 播放晨间音乐”,优先级1
- 添加任务:”窗帘: 打开50%”,优先级4
随后依次执行:
- 显示当前任务队列(按优先级排序)。
- 执行两个最高优先级任务。
- 将“灯光: 切换温馨模式”的优先级调整为0。
- 继续执行所有剩余任务,直到队列为空。
【题目要求】
实现一个SmartHomeSystem类,包含添加任务、执行任务、调整优先级、显示任务队列等方法。按照上述操作顺序输出每一步的结果。输出格式参照示例。
【输出示例】
添加任务: 空调: 调节至26℃ (优先级:2) 添加任务: 灯光: 切换温馨模式 (优先级:3) 添加任务: 音箱: 播放晨间音乐 (优先级:1) 添加任务: 窗帘: 打开50% (优先级:4) 当前任务队列(按优先级排序): - 音箱: 播放晨间音乐 (优先级:1) - 空调: 调节至26℃ (优先级:2) - 灯光: 切换温馨模式 (优先级:3) - 窗帘: 打开50% (优先级:4) 执行任务: 执行任务: 音箱: 播放晨间音乐 (优先级:1) 执行任务: 空调: 调节至26℃ (优先级:2) 调整优先级: 调整任务优先级: 灯光: 切换温馨模式 → 0 执行调整后的任务: 执行任务: 灯光: 切换温馨模式 (优先级:0) 执行任务: 窗帘: 打开50% (优先级:4) 最终任务队列: 当前没有待执行任务
试题3:校园家族树
【题目描述】
构建一个校园家族树,模拟学校成员之间的层级关系。校长为根节点,下面有老师,老师下面有学生。每个成员有姓名和角色。要求实现以下功能:
- 初始化校长“张校长”。
- 添加数学老师“李老师”和英语老师“王老师”作为校长的子节点。
- 为数学老师添加学生“小明”、“小红”;为英语老师添加学生“小刚”。
- 显示完整的家族树结构(带缩进)。
- 查找成员“小红”并输出其信息。
- 统计校园总人数。
- 从数学老师处移除学生“小明”,并再次显示树结构及总人数。
【题目要求】
定义CampusMember类,包含姓名、角色和子节点列表。实现添加子节点、移除子节点、查找成员、显示树(递归)、统计人数等方法。按照上述步骤执行并输出结果。输出格式参照示例。
【输出示例】
校长 张校长 新增数学老师: 李老师
校长 张校长 新增英语老师: 王老师
数学老师 李老师 新增学生: 小明
数学老师 李老师 新增学生: 小红
英语老师 王老师 新增学生: 小刚
校园家族树结构:
校长 张校长
数学老师 李老师
学生 小明
学生 小红
英语老师 王老师
学生 小刚
查找测试:
找到成员: 学生 小红
校园总人数: 6人
移除测试:
已移除 小明
更新后的家族树:
校长 张校长
数学老师 李老师
学生 小红
英语老师 王老师
学生 小刚
更新后总人数: 5人
试题4:超市购物清单
【题目描述】
设计一个超市购物清单管理系统,使用集合存储商品,自动去重。实现以下功能:
- 创建两个购物清单:妈妈的清单和爸爸的清单。
- 妈妈添加商品:牛奶、鸡蛋、面包、苹果、鸡蛋、香蕉。
- 爸爸添加商品:啤酒、薯片、鸡蛋、牛排、苹果。
- 检查牛奶是否在妈妈的清单中,以及是否在爸爸的清单中。
- 求两个清单的交集(全家都需要买的商品)和差集(只需要妈妈买的商品)。
- 将爸爸的清单合并到妈妈的清单中,并显示合并后的清单。
- 从合并后的清单中移除“鸡蛋”,再尝试移除不存在的“冰淇淋”,并显示最终清单。
【题目要求】
实现ShoppingList类,封装集合操作:添加、删除、检查、并集、交集、差集。按照上述操作顺序输出每一步的结果。输出格式参照示例。
【输出示例】
妈妈在添加商品:
已添加: 牛奶
已添加: 鸡蛋
已添加: 面包
已添加: 苹果
已添加: 鸡蛋
已添加: 香蕉
爸爸在添加商品:
已添加: 啤酒
已添加: 薯片
已添加: 鸡蛋
已添加: 牛排
已添加: 苹果
检查商品:
牛奶在妈妈的清单中吗? True
牛奶在爸爸的清单中吗? False
集合运算结果:
全家都需要买的商品(交集): {'苹果', '鸡蛋'}
只需要妈妈买的商品(差集): {'牛奶', '面包', '香蕉'}
合并购物清单:
购物清单已合并
当前购物清单:
1. 啤酒
2. 牛奶
3. 牛排
4. 苹果
5. 薯片
6. 面包
7. 香蕉
8. 鸡蛋
尝试移除商品:
已移除: 鸡蛋
无法移除: 冰淇淋 不在清单中
当前购物清单:
1. 啤酒
2. 牛奶
3. 牛排
4. 苹果
5. 薯片
6. 面包
7. 香蕉
试题5:植物生长记录表
【题目描述】
使用namedtuple定义植物记录,包含名称、种植日期、高度、叶片数、光照时间、浇水量。创建初始记录:
- 葵花:2026-05-01,45cm,8叶,6小时,300ml
- 番茄:2026-05-10,32cm,12叶,5小时,250ml
- 薄荷:2026-04-25,15cm,24叶,4小时,200ml
要求实现以下功能:
- 显示所有植物记录。
- 将番茄的高度更新为38cm,并再次显示。
- 找出最高的植物并输出。
- 添加新植物“玫瑰”:2026-05-05,28cm,6叶,5小时,180ml,并显示所有记录。
【题目要求】
使用collections.namedtuple定义植物记录。实现显示、更新高度、找最高植物、添加植物的函数。按照上述步骤输出结果。输出格式参照示例。
【输出示例】
我的植物生长记录表 名称 种植日期 高度 叶片数 光照 水量 葵花 2026-05-01 45 8 6 300 番茄 2026-05-10 32 12 5 250 薄荷 2026-04-25 15 24 4 200 番茄 的高度已更新为 38cm 我的植物生长记录表 名称 种植日期 高度 叶片数 光照 水量 葵花 2026-05-01 45 8 6 300 番茄 2026-05-10 38 12 5 250 薄荷 2026-04-25 15 24 4 200 最高的植物是: 葵花 (45cm) 我的植物生长记录表 名称 种植日期 高度 叶片数 光照 水量 葵花 2026-05-01 45 8 6 300 番茄 2026-05-10 38 12 5 250 薄荷 2026-04-25 15 24 4 200 玫瑰 2026-05-05 28 6 5 180
试题6:电子宠物社交系统
【题目描述】
构建一个电子宠物社交网络,每个宠物有ID、名称和种类,宠物之间可以建立双向友谊关系。使用图(邻接表)表示网络。初始宠物:
- p1: 豆豆 (电子狗)
- p2: 毛毛 (电子猫)
- p3: 花花 (电子兔)
- p4: 球球 (电子仓鼠)
- p5: 闪电 (电子狐狸)
- p6: 泡泡 (电子鱼)
建立以下友谊关系(双向):
p1-p2, p1-p3, p2-p4, p3-p4, p3-p5, p4-p6
要求:
- 输出豆豆的直接朋友。
- 从豆豆开始进行广度优先遍历,输出遍历顺序。
- 找出豆豆到泡泡的最短友谊链。
- 找出最受欢迎的宠物(朋友最多)。
- 为豆豆推荐可能认识的朋友(朋友的朋友,不包括已直接认识)。
【题目要求】
实现PetSocialNetwork类,包含添加宠物、添加友谊、获取朋友、BFS遍历、最短路径、最受欢迎宠物、朋友推荐等方法。按照上述步骤输出结果。输出格式参照示例。
【输出示例】
豆豆的直接朋友: ['花花', '毛毛'] 从豆豆出发的BFS遍历顺序: ['豆豆', '毛毛', '花花', '球球', '闪电', '泡泡'] 豆豆到泡泡的最短友谊链: ['豆豆', '毛毛', '球球', '泡泡'] 最受欢迎的宠物: 花花 (3个朋友) 给豆豆的朋友推荐: ['球球', '闪电']
试题7:图书馆找书系统
【题目描述】
图书馆的书籍已经按书名拼音顺序排好,现给出一个有序的书名列表,要求用二分查找算法快速找到目标书的位置。书列表如下:
["ATSTH安徒生童话", "BKQS百科全书", "HLBT哈利波特", "HLM红楼梦", "JYQJ金庸全集", "ST体", "SW十万个为什么", "XYJ西游记", "XWZ小王子", "ZGLS中国历史"]
查找目标书“HLBT哈利波特”。要求输出每次检查的中间书名,并给出最终位置。
【题目要求】
实现二分查找函数,输入有序列表和目标值,返回索引(从0开始)。在查找过程中,输出每次比较的中间书名。如果找到,输出位置(书架位置从1开始计数);否则输出未找到。输出格式参照示例。
【输出示例】
开始在图书馆查找:《HLBT哈利波特》 正在检查:《JYQJ金庸全集》 正在检查:《BKQS百科全书》 正在检查:《HLBT哈利波特》 找到了!《HLBT哈利波特》在第3个书架位置
试题8:超市商品价格排行榜
【题目描述】
某超市有10种商品,每种商品有名称和价格(元)。初始数据如下:
[{"name": "可乐", "price": 3},
{"name": "薯片", "price": 5},
{"name": "矿泉水A", "price": 2},
{"name": "矿泉水B", "price": 2},
{"name": "牛奶", "price": 6},
{"name": "巧克力", "price": 10},
{"name": "饼干", "price": 4},
{"name": "口香糖", "price": 3},
{"name": "方便面", "price": 5},
{"name": "果汁", "price": 8}]
请使用选择排序按价格从低到高排序,并输出每一轮排序后的结果(只需输出关键轮次或最终结果,但需体现过程)。最后验证排序的稳定性:观察矿泉水A和矿泉水B的相对顺序是否改变。
【题目要求】
实现选择排序算法,要求输出每一轮排序后的商品列表(至少输出第一轮和最终结果),并验证相同价格商品的相对顺序。输出格式参照示例。
【输出示例】
===== 商品原始价格 ===== 可乐: ¥3 薯片: ¥5 矿泉水A: ¥2 矿泉水B: ¥2 牛奶: ¥6 巧克力: ¥10 饼干: ¥4 口香糖: ¥3 方便面: ¥5 果汁: ¥8 第1轮排序结果: 矿泉水A: ¥2 薯片: ¥5 可乐: ¥3 矿泉水B: ¥2 牛奶: ¥6 巧克力: ¥10 饼干: ¥4 口香糖: ¥3 方便面: ¥5 果汁: ¥8 本轮选择:矿泉水A ¥2 ...(中间轮次省略) ===== 排序后价格排行榜 ===== 1. 矿泉水A: ¥2 2. 矿泉水B: ¥2 3. 可乐: ¥3 4. 口香糖: ¥3 5. 饼干: ¥4 6. 薯片: ¥5 7. 方便面: ¥5 8. 牛奶: ¥6 9. 果汁: ¥8 10. 巧克力: ¥10 ===== 不稳定排序验证 ===== 原始顺序中矿泉水A在矿泉水B前面 排序后顺序: 矿泉水A 矿泉水B
试题9:运动会成绩排名
【题目描述】
学校运动会100米短跑成绩如下(姓名,秒数):
[{'name': '张小明', 'score': 12.5},
{'name': '王小红', 'score': 11.8},
{'name': '李小刚', 'score': 13.2},
{'name': '盛小丽', 'score': 12.1},
{'name': '朱小强', 'score': 11.9},
{'name': '百小美', 'score': 12.7},
{'name': '盖小华', 'score': 12.3}]
请使用快速排序按成绩从快到慢(秒数从小到大)排序,并输出最终排名结果。
【题目要求】
实现快速排序算法,要求输出排序后的运动员列表(从第1名到第7名)。输出格式参照示例。
【输出示例】
原始成绩列表: 张小明: 12.5秒 王小红: 11.8秒 李小刚: 13.2秒 盛小丽: 12.1秒 朱小强: 11.9秒 百小美: 12.7秒 盖小华: 12.3秒 排名结果(从快到慢): 第1名: 王小红 11.8秒 第2名: 朱小强 11.9秒 第3名: 盛小丽 12.1秒 第4名: 盖小华 12.3秒 第5名: 张小明 12.5秒 第6名: 百小美 12.7秒 第7名: 李小刚 13.2秒
试题10:图书借阅排行榜
【题目描述】
图书馆有6本图书,每本有名称和借阅次数。数据如下:
[{'name': 'Python编程入门', 'count': 45},
{'name': '科学小实验', 'count': 78},
{'name': '动物世界', 'count': 32},
{'name': '童话故事集', 'count': 91},
{'name': '数学趣味题', 'count': 56},
{'name': '历史大发现', 'count': 23}]
请使用堆排序(利用heapq模块)按借阅次数从高到低排序,输出排行榜。
【题目要求】
实现堆排序函数,输出排序后的图书列表。输出格式参照示例。
【输出示例】
原始图书借阅数据: Python编程入门: 借阅45次 科学小实验: 借阅78次 动物世界: 借阅32次 童话故事集: 借阅91次 数学趣味题: 借阅56次 历史大发现: 借阅23次 热门图书排行榜(从高到低): 第1名: 童话故事集, 借阅91次 第2名: 科学小实验, 借阅78次 第3名: 数学趣味题, 借阅56次 第4名: Python编程入门, 借阅45次 第5名: 动物世界, 借阅32次 第6名: 历史大发现, 借阅23次
试题11:乐高零件按形状分类
【题目描述】
有10个乐高零件,每个零件有编号、形状类型、颜色、尺寸。要求先按形状类型分组,然后在每组内按颜色字母顺序排序,颜色相同的按尺寸从大到小排序(尺寸顺序:大>中>小)。零件数据如下:
[{'id': '3020', 'type': '砖块', 'color': '红', 'size': '小'},
{'id': '3021', 'type': '砖块', 'color': '蓝', 'size': '中'},
{'id': '3022', 'type': '平板', 'color': '黄', 'size': '大'},
{'id': '3023', 'type': '斜面', 'color': '红', 'size': '中'},
{'id': '3024', 'type': '砖块', 'color': '黄', 'size': '大'},
{'id': '3025', 'type': '特殊件', 'color': '蓝', 'size': '小'},
{'id': '3026', 'type': '平板', 'color': '红', 'size': '小'},
{'id': '3027', 'type': '斜面', 'color': '绿', 'size': '大'},
{'id': '3028', 'type': '砖块', 'color': '红', 'size': '大'},
{'id': '3029', 'type': '特殊件', 'color': '黄', 'size': '中'}]
请使用itertools.groupby实现分组,并按要求排序,输出每个形状类下的零件列表,以及每个类的颜色统计。
【题目要求】
实现分组排序功能,输出分组后的零件列表和颜色统计。输出格式参照示例。
【输出示例】
=== 原始零件列表 === 编号:3020 类型:砖块 颜色:红 尺寸:小 编号:3021 类型:砖块 颜色:蓝 尺寸:中 编号:3022 类型:平板 颜色:黄 尺寸:大 编号:3023 类型:斜面 颜色:红 尺寸:中 编号:3024 类型:砖块 颜色:黄 尺寸:大 编号:3025 类型:特殊件 颜色:蓝 尺寸:小 编号:3026 类型:平板 颜色:红 尺寸:小 编号:3027 类型:斜面 颜色:绿 尺寸:大 编号:3028 类型:砖块 颜色:红 尺寸:大 编号:3029 类型:特殊件 颜色:黄 尺寸:中 === 分组排序后的零件 === 【平板】类零件: 编号:3026 颜色:红 尺寸:小 编号:3022 颜色:黄 尺寸:大 【斜面】类零件: 编号:3023 颜色:红 尺寸:中 编号:3027 颜色:绿 尺寸:大 【特殊件】类零件: 编号:3025 颜色:蓝 尺寸:小 编号:3029 颜色:黄 尺寸:中 【砖块】类零件: 编号:3028 颜色:红 尺寸:大 编号:3020 颜色:红 尺寸:小 编号:3021 颜色:蓝 尺寸:中 编号:3024 颜色:黄 尺寸:大 === 每类零件的颜色统计 === 【平板】类颜色分布: 红色: 1个 黄色: 1个 【斜面】类颜色分布: 红色: 1个 绿色: 1个 【特殊件】类颜色分布: 蓝色: 1个 黄色: 1个 【砖块】类颜色分布: 红色: 2个 蓝色: 1个 黄色: 1个
试题12:电子贺卡按发送时间排序
【题目描述】
小明收到多张电子贺卡,每张贺卡有发送时间(字符串格式)和祝福内容。要求按发送时间从早到晚排序。贺卡数据如下:
("2028-12-31 23:59:58", "新年快乐!")
("2028-12-31 23:59:59", "Happy New Year!")
("2028-12-31 23:50:00", "祝你新的一年万事如意!")
("2029-01-01 00:00:01", "新年好!")
("2029-01-01 00:00:00", "元旦快乐!")
请编写程序,使用time模块将时间字符串转换为时间戳,然后按时间戳排序,输出排序后的贺卡列表。
【题目要求】
实现排序函数,输出排序后的结果。输出格式参照示例。
【输出示例】
=== 原始贺卡数据 === 2028-12-31 23:59:58 -> 新年快乐! 2028-12-31 23:59:59 -> Happy New Year! 2028-12-31 23:50:00 -> 祝你新的一年万事如意! 2029-01-01 00:00:01 -> 新年好! 2029-01-01 00:00:00 -> 元旦快乐! === 按时间排序后 === 2028-12-31 23:50:00 -> 祝你新的一年万事如意! 2028-12-31 23:59:58 -> 新年快乐! 2028-12-31 23:59:59 -> Happy New Year! 2029-01-01 00:00:00 -> 元旦快乐! 2029-01-01 00:00:01 -> 新年好!
试题13:家族辈分图
【题目描述】
构建一个家族辈分有向图,每个成员有姓名和辈分数字(数字越小辈分越高)。关系为有向边从长辈指向晚辈。初始成员:
- 高祖(1), 曾祖(2), 祖父(3), 父亲(4), 本人(5), 儿子(6), 孙子(7)
关系:
高祖→曾祖, 曾祖→祖父, 祖父→父亲, 父亲→本人, 本人→儿子, 儿子→孙子
要求:
- 以树形结构打印家族关系。
- 输出邻接表表示(有向图)。
- 查询本人的所有祖先。
- 查询祖父的所有后代。
- 查找本人和孙子的最近共同祖先。
- 查询第3辈的所有成员。
【题目要求】
实现FamilyTree类,包含添加成员、添加关系、获取祖先、获取后代、最近共同祖先、按辈分查询等方法。按照上述步骤输出结果。输出格式参照示例。
【输出示例】
添加成员: 高祖(1辈)
添加成员: 曾祖(2辈)
添加成员: 祖父(3辈)
添加成员: 父亲(4辈)
添加成员: 本人(5辈)
添加成员: 儿子(6辈)
添加成员: 孙子(7辈)
添加关系: 高祖 → 曾祖
添加关系: 曾祖 → 祖父
添加关系: 祖父 → 父亲
添加关系: 父亲 → 本人
添加关系: 本人 → 儿子
添加关系: 儿子 → 孙子
家族辈分图(有向树结构):
└── 高祖(1辈)
└── 曾祖(2辈)
└── 祖父(3辈)
└── 父亲(4辈)
└── 本人(5辈)
└── 儿子(6辈)
└── 孙子(7辈)
家族关系邻接表(有向图):
高祖 → ['曾祖']
曾祖 → ['祖父']
祖父 → ['父亲']
父亲 → ['本人']
本人 → ['儿子']
儿子 → ['孙子']
--- 辈分关系查询 ---
本人的所有祖先: ['父亲(4辈)', '祖父(3辈)', '曾祖(2辈)', '高祖(1辈)']
本人的直接父辈: ['父亲(4辈)']
祖父的所有后代: ['父亲(4辈)', '本人(5辈)', '儿子(6辈)', '孙子(7辈)']
祖父的直接后代: ['父亲(4辈)']
本人和孙子的最近共同祖先: 父亲(4辈)
第3辈的所有成员: ['祖父(3辈)']
试题14:古诗词接龙网络
【题目描述】
给定一个古诗库(诗句列表),诗句之间如果前一句的最后一个字和后一句的第一个字相同,则可以形成接龙。将诗句视为节点,接龙关系视为有向边,构建有向图。使用深度优先搜索(DFS)找出从指定诗句开始的最长接龙序列。古诗库如下(索引从0开始):
0: 床前明月光
1: 光阴似箭
2: 箭在弦上
3: 上天入地
4: 地久天长
5: 长夜漫漫
6: 漫卷诗书
7: 书山有路
8: 路不拾遗
9: 遗世独立
要求:
- 输出接龙关系图(邻接表,只显示有出边的节点)。
- 从诗句0(床前明月光)开始,找出最长接龙序列,输出诗句文本和接龙关系。
- 从诗句3(上天入地)开始,找出最长接龙序列。
【题目要求】
实现PoetryChain类,构建有向图,使用DFS递归查找最长路径,避免环路。输出结果。输出格式参照示例。
【输出示例】
古诗库:
0: 床前明月光
1: 光阴似箭
2: 箭在弦上
3: 上天入地
4: 地久天长
5: 长夜漫漫
6: 漫卷诗书
7: 书山有路
8: 路不拾遗
9: 遗世独立
接龙关系图(邻接表):
0('光') -> ['1(光)']
1('箭') -> ['2(箭)']
2('上') -> ['3(上)']
3('地') -> ['4(地)']
4('长') -> ['5(长)']
5('漫') -> ['6(漫)']
6('书') -> ['7(书)']
7('路') -> ['8(路)']
8('遗') -> ['9(遗)']
=== 从『床前明月光』开始的最长接龙 ===
接龙长度: 10
接龙序列:
1. 床前明月光
2. 光阴似箭
3. 箭在弦上
4. 上天入地
5. 地久天长
6. 长夜漫漫
7. 漫卷诗书
8. 书山有路
9. 路不拾遗
10. 遗世独立
接龙关系: 光→光 箭→箭 上→上 地→地 长→长 漫→漫 书→书 路→路 遗→遗
=== 从『上天入地』开始的最长接龙 ===
接龙长度: 7
接龙序列:
1. 上天入地
2. 地久天长
3. 长夜漫漫
4. 漫卷诗书
5. 书山有路
6. 路不拾遗
7. 遗世独立
接龙关系: 地→地 长→长 漫→漫 书→书 路→路 遗→遗
试题15:都江堰智慧灌溉
【题目描述】
给定一个灌溉区域网格,包含水源点(W)、需灌溉耕地(.)和障碍物(#)。水从所有水源点同时向上下左右四个方向流动,每单位时间流动一格,且不能穿过障碍物。请计算:
- 最少需要多少水源点才能覆盖全部耕地?现有水源点为 (1,1)、(3,3)、(5,4)(坐标从0开始),判断是否能覆盖全部区域。
- 从现有水源点出发,水覆盖整个区域所需的最少时间(即最远耕地被覆盖的时间)。
灌溉区域网格如下(6行6列):
. . . # . . . W . # . . . . . . . # # # . W . . . . . . . . . . # . W .
(其中 W 表示水源,. 表示耕地,# 表示障碍)
【题目要求】
编写程序,使用多源BFS模拟水流扩散。第一问要求判断现有水源能否覆盖全部耕地(若能则输出时间,否则输出-1)。第二问输出覆盖全区域所需时间。输出格式参照示例。
【输出示例】
灌溉区域地图: . . . # . . . W . # . . . . . . . # # # . W . . . . . . . . . . # . W . 最少需要的水源点数量: 1 从现有水源点覆盖全区域所需时间: 5 单位时间 BFS层次遍历模拟水流扩散: 第0层: (0,0) 第1层: (1,0) (0,1) 第2层: (2,0) (0,2) 第3层: (2,1) (1,2) 第4层: (2,2)
试题16:古驿道物资运输
【题目描述】
给定古代驿道网络(加权无向图),要求从长安运送物资到广州,必须经过襄阳和荆州这两个重要驿站,同时需要避开洛阳到开封的路段(因山路险峻)。驿道网络用邻接表表示(节点为驿站名,边为距离)。网络数据如下:
长安: {'洛阳': 300, '潼关': 120}
洛阳: {'长安': 300, '开封': 200, '南阳': 180}
潼关: {'长安': 120, '南阳': 220, '襄阳': 280}
南阳: {'洛阳': 180, '潼关': 220, '襄阳': 150, '荆州': 240}
开封: {'洛阳': 200, '徐州': 280}
襄阳: {'潼关': 280, '南阳': 150, '荆州': 100, '武昌': 200}
荆州: {'南阳': 240, '襄阳': 100, '武昌': 180, '长沙': 300}
徐州: {'开封': 280, '南京': 250}
武昌: {'襄阳': 200, '荆州': 180, '长沙': 220, '南京': 400}
南京: {'徐州': 250, '武昌': 400, '杭州': 180}
长沙: {'荆州': 300, '武昌': 220, '广州': 600}
杭州: {'南京': 180, '福州': 300}
福州: {'杭州': 300, '广州': 500}
广州: {'长沙': 600, '福州': 500}
历史运输数据记录了某些路径的成功次数(可作为权重辅助优化)。现要求:
- 计算不考虑必经点时的基础最短路径及距离。
- 找出所有满足必经点约束且避开禁用路段的路径,并按距离排序,输出前几条(如全部或前5条)。
- 结合历史数据(路径成功次数),综合距离和历史成功率选择最优路径(可自定义评分公式,例如 score = 距离*0.7 + 历史成功率*0.3)。
历史运输数据如下(路径用元组表示,值为成功次数):
('长安','潼关','南阳','襄阳','荆州','武昌','广州'): 15
('长安','洛阳','南阳','荆州','长沙','广州'): 12
('长安','洛阳','开封','徐州','南京','杭州','福州','广州'): 8
('长安','潼关','襄阳','荆州','长沙','广州'): 20
【题目要求】
实现ConstrainedShortestPath类,包含基础Dijkstra、带约束的路径搜索、历史数据优化等方法。按照上述要求输出结果。输出格式参照示例(可适当简化,但需体现关键信息)。
【输出示例】
基于历史数据的古驿道物资运输路径优化
==================================================
=== 古驿道物资运输路径优化 ===
起点: 长安, 终点: 广州
必经驿站: ['襄阳', '荆州']
避开路段: [('洛阳', '开封')]
1. 基础最短路径: 长安 → 潼关 → 襄阳 → 荆州 → 长沙 → 广州
距离: 1400里
2. 所有满足约束的路径(共29条):
路径1: 长安 → 潼关 → 襄阳 → 荆州 → 长沙 → 广州
距离: 1400里, 历史成功率: 20次
路径2: 长安 → 潼关 → 南阳 → 襄阳 → 荆州 → 长沙 → 广州
距离: 1490里, 历史成功率: 0次
路径3: 长安 → 潼关 → 襄阳 → 荆州 → 武昌 → 长沙 → 广州
距离: 1500里, 历史成功率: 0次
路径4: 长安 → 潼关 → 南阳 → 襄阳 → 荆州 → 武昌 → 长沙 → 广州
距离: 1590里, 历史成功率: 0次
路径5: 长安 → 洛阳 → 南阳 → 襄阳 → 荆州 → 长沙 → 广州
距离: 1630里, 历史成功率: 0次
路径6: 长安 → 潼关 → 襄阳 → 武昌 → 荆州 → 长沙 → 广州
距离: 1680里, 历史成功率: 0次
路径7: 长安 → 潼关 → 襄阳 → 南阳 → 荆州 → 长沙 → 广州
距离: 1690里, 历史成功率: 0次
路径8: 长安 → 潼关 → 南阳 → 荆州 → 襄阳 → 武昌 → 长沙 → 广州
距离: 1700里, 历史成功率: 0次
路径9: 长安 → 洛阳 → 南阳 → 襄阳 → 荆州 → 武昌 → 长沙 → 广州
距离: 1730里, 历史成功率: 0次
路径10: 长安 → 潼关 → 南阳 → 襄阳 → 武昌 → 荆州 → 长沙 → 广州
距离: 1770里, 历史成功率: 0次
路径11: 长安 → 潼关 → 襄阳 → 南阳 → 荆州 → 武昌 → 长沙 → 广州
距离: 1790里, 历史成功率: 0次
路径12: 长安 → 洛阳 → 南阳 → 荆州 → 襄阳 → 武昌 → 长沙 → 广州
距离: 1840里, 历史成功率: 0次
路径13: 长安 → 洛阳 → 南阳 → 襄阳 → 武昌 → 荆州 → 长沙 → 广州
距离: 1910里, 历史成功率: 0次
路径14: 长安 → 洛阳 → 南阳 → 潼关 → 襄阳 → 荆州 → 长沙 → 广州
距离: 1980里, 历史成功率: 0次
路径15: 长安 → 潼关 → 襄阳 → 荆州 → 武昌 → 南京 → 杭州 → 福州 → 广州
距离: 2060里, 历史成功率: 0次
路径16: 长安 → 洛阳 → 南阳 → 潼关 → 襄阳 → 荆州 → 武昌 → 长沙 → 广州
距离: 2080里, 历史成功率: 0次
路径17: 长安 → 潼关 → 南阳 → 襄阳 → 荆州 → 武昌 → 南京 → 杭州 → 福州 → 广州
距离: 2150里, 历史成功率: 0次
路径18: 长安 → 洛阳 → 南阳 → 潼关 → 襄阳 → 武昌 → 荆州 → 长沙 → 广州
距离: 2260里, 历史成功率: 0次
路径19: 长安 → 潼关 → 南阳 → 荆州 → 襄阳 → 武昌 → 南京 → 杭州 → 福州 → 广州
距离: 2260里, 历史成功率: 0次
路径20: 长安 → 洛阳 → 南阳 → 襄阳 → 荆州 → 武昌 → 南京 → 杭州 → 福州 → 广州
距离: 2290里, 历史成功率: 0次
路径21: 长安 → 潼关 → 襄阳 → 南阳 → 荆州 → 武昌 → 南京 → 杭州 → 福州 → 广州
距离: 2350里, 历史成功率: 0次
路径22: 长安 → 洛阳 → 南阳 → 荆州 → 襄阳 → 武昌 → 南京 → 杭州 → 福州 → 广州
距离: 2400里, 历史成功率: 0次
路径23: 长安 → 潼关 → 襄阳 → 荆州 → 长沙 → 武昌 → 南京 → 杭州 → 福州 → 广州
距离: 2400里, 历史成功率: 0次
路径24: 长安 → 潼关 → 南阳 → 襄阳 → 荆州 → 长沙 → 武昌 → 南京 → 杭州 → 福州 → 广州
距离: 2490里, 历史成功率: 0次
路径25: 长安 → 洛阳 → 南阳 → 襄阳 → 荆州 → 长沙 → 武昌 → 南京 → 杭州 → 福州 → 广州
距离: 2630里, 历史成功率: 0次
路径26: 长安 → 洛阳 → 南阳 → 潼关 → 襄阳 → 荆州 → 武昌 → 南京 → 杭州 → 福州 → 广州
距离: 2640里, 历史成功率: 0次
路径27: 长安 → 潼关 → 襄阳 → 南阳 → 荆州 → 长沙 → 武昌 → 南京 → 杭州 → 福州 → 广州
距离: 2690里, 历史成功率: 0次
路径28: 长安 → 洛阳 → 南阳 → 潼关 → 襄阳 → 荆州 → 长沙 → 武昌 → 南京 → 杭州 → 福州 → 广州
距离: 2980里, 历史成功率: 0次
路径29: 长安 → 潼关 → 襄阳 → 武昌 → 南京 → 徐州 → 开封 → 洛阳 → 南阳 → 荆州 → 长沙 → 广州
距离: 3050里, 历史成功率: 0次
3. 综合最优路径: 长安 → 潼关 → 襄阳 → 荆州 → 长沙 → 广州
最终距离: 1400里
驿道网络概况:
长安: 可通往 洛阳, 潼关
洛阳: 可通往 长安, 开封, 南阳
潼关: 可通往 长安, 南阳, 襄阳
南阳: 可通往 洛阳, 潼关, 襄阳, 荆州
开封: 可通往 洛阳, 徐州
襄阳: 可通往 潼关, 南阳, 荆州, 武昌
荆州: 可通往 南阳, 襄阳, 武昌, 长沙
徐州: 可通往 开封, 南京
武昌: 可通往 襄阳, 荆州, 长沙, 南京
南京: 可通往 徐州, 武昌, 杭州
长沙: 可通往 荆州, 武昌, 广州
杭州: 可通往 南京, 福州
福州: 可通往 杭州, 广州
广州: 可通往 长沙, 福州
试题17:传统建筑榫卯结构稳定性
【题目描述】
传统木结构建筑有7个木构件(编号0-6),它们之间可以通过榫卯连接。每个可能的连接有一个稳定性权重(权重越小越稳定)。所有可能的连接及权重如下:
(0,1,2), (0,3,1), (0,4,4), (1,2,3), (1,4,2), (1,5,5), (2,5,2), (2,6,3), (3,4,1), (3,6,4), (4,5,3), (5,6,2)
要求设计一个最小支撑网络,用最少的榫卯连接所有构件,且总稳定性最佳(权重和最小)。请使用Kruskal算法求解,并输出所选连接及总稳定性评分。同时,分析哪些连接是冗余的(即不在最小生成树中的连接)。
【题目要求】
实现UnionFind并查集和Kruskal算法。输出最小生成树的边列表、总稳定性评分,以及被消除的冗余连接列表。输出格式参照示例。
【输出示例】
传统建筑榫卯结构最小支撑网络设计 ================================================== 木构件编号:0-柱A, 1-柱B, 2-柱C, 3-梁D, 4-梁E, 5-梁F, 6-枋G 所有可能的榫卯连接及稳定性权重(权重越小越稳定): 连接1: 构件0-构件1, 稳定性权重: 2 连接2: 构件0-构件3, 稳定性权重: 1 连接3: 构件0-构件4, 稳定性权重: 4 连接4: 构件1-构件2, 稳定性权重: 3 连接5: 构件1-构件4, 稳定性权重: 2 连接6: 构件1-构件5, 稳定性权重: 5 连接7: 构件2-构件5, 稳定性权重: 2 连接8: 构件2-构件6, 稳定性权重: 3 连接9: 构件3-构件4, 稳定性权重: 1 连接10: 构件3-构件6, 稳定性权重: 4 连接11: 构件4-构件5, 稳定性权重: 3 连接12: 构件5-构件6, 稳定性权重: 2 最小支撑网络(消除冗余连接,使用6个榫卯): 榫卯1: 构件0-构件3, 稳定性权重: 1 榫卯2: 构件3-构件4, 稳定性权重: 1 榫卯3: 构件0-构件1, 稳定性权重: 2 榫卯4: 构件2-构件5, 稳定性权重: 2 榫卯5: 构件5-构件6, 稳定性权重: 2 榫卯6: 构件1-构件2, 稳定性权重: 3 总稳定性评分: 11(越小越稳定) 被消除的冗余连接(6个): 冗余连接: 构件1-构件4, 稳定性权重: 2 冗余连接: 构件2-构件6, 稳定性权重: 3 冗余连接: 构件4-构件5, 稳定性权重: 3 冗余连接: 构件0-构件4, 稳定性权重: 4 冗余连接: 构件3-构件6, 稳定性权重: 4 冗余连接: 构件1-构件5, 稳定性权重: 5 连通性验证: 所有1个木构件通过6个榫卯连接形成一个整体
试题18:二十四节气农事活动链
【题目描述】
根据二十四节气,农事活动有严格的先后依赖关系。现有10项农事活动(编号1-10)及其描述:
1: 松土保墒(立春时节,土壤解冻,进行松土保墒工作)
2: 送粪积肥(准备春耕所需的肥料)
3: 春耕春播(开始春季耕作和播种)
4: 选种准备(雨水时节选种,为播种做准备)
5: 小麦追肥(惊蛰时节给小麦追肥)
6: 播种作业(进行大规模播种)
7: 农田灌溉(春分后开始灌溉)
8: 作物管理(清明前后进行作物管理)
9: 夏收准备(小满时节准备夏季收获)
10: 秋收工作(秋分时节进行秋季收获)
合理的依赖关系如下(有向边从先修指向后续):
1→3, 2→3, 3→6, 4→6, 6→5, 6→7, 7→8, 8→9, 9→10
请判断该依赖关系是否存在环,若无环则输出一个合理的农事活动顺序(拓扑排序)。若添加循环依赖(如10→1, 8→2),则检测到环并输出提示。
【题目要求】
实现拓扑排序算法(使用DFS或Kahn算法),分别对合理依赖和添加循环依赖后的情况进行检测,并输出结果。输出格式参照示例。
【输出示例】
=== 二十四节气农事活动链检测 === 测试1 - 合理的农事活动链: 检测到循环依赖: False 合理的农事顺序: [4, 2, 1, 3, 6, 7, 8, 9, 10, 5] 详细顺序: 1. 选种准备 - 雨水时节选种,为播种做准备 2. 送粪积肥 - 准备春耕所需的肥料 3. 松土保墒 - 立春时节,土壤解冻,进行松土保墒工作 4. 春耕春播 - 开始春季耕作和播种 5. 播种作业 - 进行大规模播种 6. 农田灌溉 - 春分后开始灌溉 7. 作物管理 - 清明前后进行作物管理 8. 夏收准备 - 小满时节准备夏季收获 9. 秋收工作 - 秋分时节进行秋季收获 10. 小麦追肥 - 惊蛰时节给小麦追肥 测试2 - 有循环依赖的农事安排: 检测到循环依赖: True 发现不合理的农事安排!存在循环依赖 示例:秋收工作需要在松土保墒之前,但松土保墒又是秋收的前提 这种循环依赖在农业生产中不可能实现 测试3 - '秋收工作'的依赖链分析: 依赖链: [10, 9, 8, 7, 6, 3, 1, 2, 4] 依赖路径详情: ↳ 秋收工作 ↳ 夏收准备 ↳ 作物管理 ↳ 农田灌溉 ↳ 播种作业 ↳ 春耕春播 ↳ 松土保墒 ↳ 送粪积肥 ↳ 选种准备
试题19:传统文化节日礼物打包
【题目描述】
春节将至,小明需要将礼物装入容量为8的礼品盒中。礼物有5种,每种有名称、价值和体积,礼物可以分割(只装一部分)。礼物数据如下:
- 中国结:价值80,体积2
- 春联:价值30,体积1
- 剪纸:价值60,体积3
- 灯笼:价值100,体积20
- 红包:价值40,体积4
要求使用贪心算法(按单位体积价值从高到低)选择礼物,使得总价值最大。输出每一步的选择过程及最终打包方案。
【题目要求】
实现分数背包问题的贪心算法,输出按价值密度排序后的礼物列表、选择过程(包括全部装入或部分装入)、最终打包方案和总价值。输出格式参照示例。
【输出示例】
=== 传统文化节日礼物打包问题 === 礼品盒总容量: 8 所有礼物清单: 1. 中国结(价值:80, 体积:2, 密度:40.00) 2. 春联(价值:30, 体积:1, 密度:30.00) 3. 剪纸(价值:60, 体积:3, 密度:20.00) 4. 灯笼(价值:100, 体积:20, 密度:5.00) 5. 红包(价值:40, 体积:4, 密度:10.00) 按价值密度排序后的礼物: 1. 中国结(价值:80, 体积:2, 密度:40.00) 2. 春联(价值:30, 体积:1, 密度:30.00) 3. 剪纸(价值:60, 体积:3, 密度:20.00) 4. 红包(价值:40, 体积:4, 密度:10.00) 5. 灯笼(价值:100, 体积:20, 密度:5.00) 开始打包: √ 全部装入 中国结,价值: 80,体积: 2 √ 全部装入 春联,价值: 30,体积: 1 √ 全部装入 剪纸,价值: 60,体积: 3 ○ 部分装入 红包,比例: 0.50,价值: 20.0,体积: 2.0 📦 最终打包方案: ✅ 全部装入: 中国结,价值: 80,体积: 2 ✅ 全部装入: 春联,价值: 30,体积: 1 ✅ 全部装入: 剪纸,价值: 60,体积: 3 ⭕ 部分装入: 红包,比例: 0.50,价值: 20.0,体积: 2.0 礼盒总价值: 190.0 礼盒剩余空间: 0.0
试题20:孙悟空翻越火焰山
【题目描述】
孙悟空站在第一座山上,每座山上标有一个数字,表示从这座山最多能向前跳跃的山数(即能跳到当前位置加上该数字范围内的任何位置)。给定三组火焰山分布,判断孙悟空是否能到达最后一座山,如果能,求出最少跳跃次数。
测试案例:
- [2, 3, 1, 1, 4] (能到达)
- [3, 2, 1, 0, 4] (不能到达)
- [1, 3, 2, 1, 1, 4] (能到达,需要计算步数)
要求输出每组案例的详细分析过程,包括每一步的最远可达位置、跳跃次数,以及最终结论。
【题目要求】
实现贪心算法,维护当前最远可达位置和步数边界,判断可达性并计算最少跳跃次数。输出每组案例的分析过程和结果。输出格式参照示例。
【输出示例】
案例1:[2, 3, 1, 1, 4] === 孙悟空翻越火焰山分析报告 === 火焰山分布: [2, 3, 1, 1, 4] 孙悟空开始翻越火焰山... 站在山0,可跳到山2,当前最远能到山2 🐒 第1次跳跃,下一步能到达山2 站在山1,可跳到山4,当前最远能到山4 ✅ 从山1可以直接或间接跳到终点! ================================================== 🎉 成功!孙悟空能用2次跳跃到达终点 案例2:[3, 2, 1, 0, 4] === 孙悟空翻越火焰山分析报告 === 火焰山分布: [3, 2, 1, 0, 4] 孙悟空开始翻越火焰山... 站在山0,可跳到山3,当前最远能到山3 🐒 第1次跳跃,下一步能到达山3 站在山1,可跳到山3,当前最远能到山3 站在山2,可跳到山3,当前最远能到山3 站在山3,可跳到山3,当前最远能到山3 🐒 第2次跳跃,下一步能到达山3 ❌ 困在山3,无法前进! ================================================== 😞 失败!孙悟空无法翻越所有火焰山 案例3:[1, 3, 2, 1, 1, 4] === 孙悟空翻越火焰山分析报告 === 火焰山分布: [1, 3, 2, 1, 1, 4] 孙悟空开始翻越火焰山... 站在山0,可跳到山1,当前最远能到山1 🐒 第1次跳跃,下一步能到达山1 站在山1,可跳到山4,当前最远能到山4 🐒 第2次跳跃,下一步能到达山4 站在山2,可跳到山4,当前最远能到山4 站在山3,可跳到山4,当前最远能到山4 站在山4,可跳到山5,当前最远能到山5 ✅ 从山4可以直接或间接跳到终点! ================================================== 🎉 成功!孙悟空能用3次跳跃到达终点
试题21:爬楼梯问题
【题目描述】
爬楼梯问题:每次可以爬1级或2级台阶,问爬到第n级台阶有多少种不同的方法。要求用动态规划求解,并展示状态转移过程。
测试n=1,2,3,4,5。输出每种情况的方法数,并演示dp数组的计算过程(至少展示n=3时的递推)。
【题目要求】
实现两种动态规划解法:基础数组版本(O(n)空间)和滚动变量优化版本(O(1)空间)。对于每个测试n,输出方法数和优化版本的计算过程。输出格式参照示例。
【输出示例】
============================================================
爬楼梯问题 - 动态规划解法演示
============================================================
★ 测试 1 阶楼梯:
------------------------------
1. 基础动态规划版本:
结果: 1 种方法
2. 空间优化版本:
结果: 1 种方法
总结: 爬 1 阶楼梯共有 1 种不同的方法
============================================================
★ 测试 2 阶楼梯:
------------------------------
1. 基础动态规划版本:
dp[2] = dp[1] + dp[0] = 1 + 1 = 2
结果: 2 种方法
2. 空间优化版本:
初始状态: prev_prev (dp[0]) = 1, prev (dp[1]) = 1
第2阶: 1 + 1 = 2
结果: 2 种方法
总结: 爬 2 阶楼梯共有 2 种不同的方法
============================================================
★ 测试 3 阶楼梯:
------------------------------
1. 基础动态规划版本:
dp[2] = dp[1] + dp[0] = 1 + 1 = 2
dp[3] = dp[2] + dp[1] = 2 + 1 = 3
结果: 3 种方法
2. 空间优化版本:
初始状态: prev_prev (dp[0]) = 1, prev (dp[1]) = 1
第2阶: 1 + 1 = 2
第3阶: 2 + 1 = 3
结果: 3 种方法
总结: 爬 3 阶楼梯共有 3 种不同的方法
============================================================
★ 测试 4 阶楼梯:
------------------------------
1. 基础动态规划版本:
dp[2] = dp[1] + dp[0] = 1 + 1 = 2
dp[3] = dp[2] + dp[1] = 2 + 1 = 3
dp[4] = dp[3] + dp[2] = 3 + 2 = 5
结果: 5 种方法
2. 空间优化版本:
初始状态: prev_prev (dp[0]) = 1, prev (dp[1]) = 1
第2阶: 1 + 1 = 2
第3阶: 2 + 1 = 3
第4阶: 3 + 2 = 5
结果: 5 种方法
总结: 爬 4 阶楼梯共有 5 种不同的方法
============================================================
★ 测试 5 阶楼梯:
------------------------------
1. 基础动态规划版本:
dp[2] = dp[1] + dp[0] = 1 + 1 = 2
dp[3] = dp[2] + dp[1] = 2 + 1 = 3
dp[4] = dp[3] + dp[2] = 3 + 2 = 5
dp[5] = dp[4] + dp[3] = 5 + 3 = 8
结果: 8 种方法
2. 空间优化版本:
初始状态: prev_prev (dp[0]) = 1, prev (dp[1]) = 1
第2阶: 1 + 1 = 2
第3阶: 2 + 1 = 3
第4阶: 3 + 2 = 5
第5阶: 5 + 3 = 8
结果: 8 种方法
总结: 爬 5 阶楼梯共有 8 种不同的方法
============================================================
试题22:榫卯结构的力学传递
【题目描述】
给定一个榫卯结构承重矩阵(类似数字三角形),每个数字代表该位置的承重能力。从顶部开始,每次可以向下走到左下方或右下方,路径上的承重累加。求从顶部到底部的最大承重路径和,并输出该路径。同时对比贪心算法(每次都选较大的子节点)和动态规划的结果。
承重矩阵如下:
第0层: [5]
第1层: [9, 3]
第2层: [8, 7, 4]
第3层: [4, 6, 9, 3]
要求:
- 用贪心算法找出路径,输出承重和及路径。
- 用动态规划找出最优路径,输出承重和及路径。
- 对比两种算法的结果。
【题目要求】
实现贪心算法(从上到下每次选择较大的子节点)和动态规划(从底部向上递推)。输出两种算法的选择过程和最终结果。输出格式参照示例。
【输出示例】
=== 重构后的榫卯结构承重测试 === 榫卯结构承重矩阵: 第0层: [5] 第1层: [9, 3] 第2层: [8, 7, 4] 第3层: [4, 6, 9, 3] 贪心算法选择过程: 第0层: 选择索引0, 承重5 第1层: 可选索引0(9) 或 1(3) -> 选择索引0, 累计承重14 第2层: 可选索引0(8) 或 1(7) -> 选择索引0, 累计承重22 第3层: 可选索引0(4) 或 1(6) -> 选择索引1, 累计承重28 动态规划计算过程: 第0层: dp[0] = [5] 第1层: dp[1] = [14, 8] 第2层: dp[2] = [22, 21, 12] 第3层: dp[3] = [26, 28, 30, 15] === 算法结果对比 === 贪心算法结果: 承重 28, 路径 [0, 0, 0, 1] 动态规划结果: 承重 30, 路径 [0, 0, 1, 2] === 路径对比分析 === 5(GD) 9(GD) 3 8(G) 7(D) 4 4 6(G) 9(D) 3 ❌ 算法结果不一致: 贪心28 vs 动态规划30
试题23:最大子序和
【题目描述】
给定一个整数数组,求其连续子数组的最大和。分别用贪心算法(Kadane算法思想)和动态规划求解,并对比过程。
测试数据:[-2, 1, -3, 4, -1, 2, 1, -5, 4]
要求:
- 用贪心算法(维护当前和,如果当前和为负则重置)输出每一步的过程。
- 用动态规划(dp[i]表示以i结尾的最大子序和)输出每一步的过程。
- 输出两种算法的最终结果,并验证一致性。
【题目要求】
实现两种算法,输出每一步的计算过程(参考示例格式)。最终结果应一致。
【输出示例】
小明9天的零花钱记录: [-2, 1, -3, 4, -1, 2, 1, -5, 4] ================================================== 贪心算法执行过程: 初始状态: 当前和 = -2, 最大和 = -2 第1天: 当前和-2为负数,重新开始计算 更新最大和 = 1 第2天: 继续累加,当前和 = -2 最大和保持不变 第3天: 当前和-2为负数,重新开始计算 更新最大和 = 4 第4天: 继续累加,当前和 = 3 最大和保持不变 第5天: 继续累加,当前和 = 5 更新最大和 = 5 第6天: 继续累加,当前和 = 6 更新最大和 = 6 第7天: 继续累加,当前和 = 1 最大和保持不变 第8天: 继续累加,当前和 = 5 最大和保持不变 贪心算法结果: 6 动态规划执行过程: 初始化: dp[0] = -2 第1天: dp[1] = max(dp[0] + 1, 1) = 1 当前最大和 = 1 第2天: dp[2] = max(dp[1] + -3, -3) = -2 当前最大和 = 1 第3天: dp[3] = max(dp[2] + 4, 4) = 4 当前最大和 = 4 第4天: dp[4] = max(dp[3] + -1, -1) = 3 当前最大和 = 4 第5天: dp[5] = max(dp[4] + 2, 2) = 5 当前最大和 = 5 第6天: dp[6] = max(dp[5] + 1, 1) = 6 当前最大和 = 6 第7天: dp[7] = max(dp[6] + -5, -5) = 1 当前最大和 = 6 第8天: dp[8] = max(dp[7] + 4, 4) = 5 当前最大和 = 6 动态规划结果: 6 ================================================== 算法对比总结: 二种方法结果一致: True 最优连续零花钱和: 6
试题24:传统文化节气活动安排
【题目描述】
学校文化节有多个基于二十四节气的传统文化活动,每个活动有开始时间和结束时间。要求安排尽可能多的活动,使得活动时间不重叠。请使用贪心算法(按结束时间最早优先)求解。
场景1(标准节气活动):
("立春剪纸", 900, 1030)
("雨水茶艺", 1030, 1130)
("惊蛰种植", 1100, 1200)
("春分踏青", 1300, 1430)
("清明扫墓", 1400, 1530)
("谷雨赏花", 1500, 1630)
("立夏尝新", 1600, 1700)
("小满养蚕", 1700, 1800)
场景2(密集活动挑战):
("端午赛舟", 800, 1000)
("芒种收割", 900, 1100)
("夏至观日", 1000, 1200)
("小暑纳凉", 1100, 1300)
("大暑游泳", 1200, 1400)
要求对每个场景,输出活动按结束时间排序后的列表、选择过程,以及最终安排的活动列表和数量。
【题目要求】
实现贪心活动选择算法,输出每个场景的排序结果、选择过程及最终方案。输出格式参照示例。
【输出示例】
🎋 传统文化节气活动安排系统
============================================================
场景1: 春季节气活动安排
----------------------------------------
节气活动安排贪心算法执行过程:
活动按结束时间排序结果:
1. 立春剪纸: 900-1030 (结束时间: 1030)
2. 雨水茶艺: 1030-1130 (结束时间: 1130)
3. 惊蛰种植: 1100-1200 (结束时间: 1200)
4. 春分踏青: 1300-1430 (结束时间: 1430)
5. 清明扫墓: 1400-1530 (结束时间: 1530)
6. 谷雨赏花: 1500-1630 (结束时间: 1630)
7. 立夏尝新: 1600-1700 (结束时间: 1700)
8. 小满养蚕: 1700-1800 (结束时间: 1800)
开始选择活动:
✅ 选择活动: 立春剪纸 (900-1030)
更新最后结束时间: 1030
✅ 选择活动: 雨水茶艺 (1030-1130)
更新最后结束时间: 1130
❌ 跳过活动: 惊蛰种植 (与上一个活动冲突)
✅ 选择活动: 春分踏青 (1300-1430)
更新最后结束时间: 1430
❌ 跳过活动: 清明扫墓 (与上一个活动冲突)
✅ 选择活动: 谷雨赏花 (1500-1630)
更新最后结束时间: 1630
❌ 跳过活动: 立夏尝新 (与上一个活动冲突)
✅ 选择活动: 小满养蚕 (1700-1800)
更新最后结束时间: 1800
==================================================
最终活动安排方案
==================================================
成功安排的活动:
1. 立春剪纸: 900-1030
2. 雨水茶艺: 1030-1130
3. 春分踏青: 1300-1430
4. 谷雨赏花: 1500-1630
5. 小满养蚕: 1700-1800
统计结果:
- 总活动数量: 5个
场景2: 密集活动安排挑战
----------------------------------------
节气活动安排贪心算法执行过程:
活动按结束时间排序结果:
1. 端午赛舟: 800-1000 (结束时间: 1000)
2. 芒种收割: 900-1100 (结束时间: 1100)
3. 夏至观日: 1000-1200 (结束时间: 1200)
4. 小暑纳凉: 1100-1300 (结束时间: 1300)
5. 大暑游泳: 1200-1400 (结束时间: 1400)
开始选择活动:
✅ 选择活动: 端午赛舟 (800-1000)
更新最后结束时间: 1000
❌ 跳过活动: 芒种收割 (与上一个活动冲突)
✅ 选择活动: 夏至观日 (1000-1200)
更新最后结束时间: 1200
❌ 跳过活动: 小暑纳凉 (与上一个活动冲突)
✅ 选择活动: 大暑游泳 (1200-1400)
更新最后结束时间: 1400
==================================================
最终活动安排方案
==================================================
成功安排的活动:
1. 端午赛舟: 800-1000
2. 夏至观日: 1000-1200
3. 大暑游泳: 1200-1400
统计结果:
- 总活动数量: 3个
试题25:粒子碰撞路径计数
【题目描述】
在一个5×5的网格中,粒子从左上角(0,0)出发,要到达右下角(4,4)。网格中有障碍物(值为1的位置不能经过),粒子只能向右或向下移动。请计算所有可能的路径数量。网格如下:
[0, 0, 0, 0, 0] [0, 1, 0, 1, 0] [0, 0, 0, 0, 0] [0, 1, 0, 1, 0] [0, 0, 0, 0, 0]
要求分别用朴素递归和记忆化递归两种方法求解,并对比性能(运行时间)。输出两种方法的路径数及耗时。
【题目要求】
实现两个函数:count_paths_naive(朴素递归)和count_paths_memo(使用字典缓存)。测试网格,输出两种方法的结果和时间,并计算性能提升倍数。输出格式参照示例。
【输出示例】
=== 粒子碰撞路径计数优化实验 === 网格地图: S · · # · · · # · # · · · · · · · # # # · W · · · · · · · · · · # · · · 网格大小: 6x6 障碍物数量: 7 --- 性能对比测试 --- 朴素递归结果: 6条路径 手动记忆化结果: 6条路径 装饰器记忆化结果: 6条路径 朴素递归耗时: 0.000013秒 手动记忆化耗时: 0.000015秒 装饰器记忆化耗时: 0.000025秒 手动记忆化性能提升: 0.9倍 装饰器记忆化性能提升: 0.5倍 结果一致性验证: True ✓ --- 缓存键设计分析 --- 缓存键格式: (x, y) - 使用位置坐标作为唯一标识 这种设计能够准确识别重复的计算状态 --- 大规模网格测试 --- 10x10网格 - 朴素递归: 0.00445秒 10x10网格 - 记忆化优化: 0.00007秒 大规模测试性能提升: 65.2倍
试题26:星座图像压缩存储
【题目描述】
星座图像通常是一个大型网格,其中大部分像素为0(背景),只有少数位置有星星(非零亮度)。请将以下5×5的星图(0表示背景,非0表示星星亮度)转换为稀疏表示(使用字典存储非零元素),并对比稠密存储和稀疏存储的空间大小。
星图数据:
[ [0, 0, 0, 0, 0], [0, 3, 0, 0, 5], [0, 0, 0, 0, 0], [0, 0, 2, 0, 0], [0, 0, 0, 0, 7] ]
要求:
- 输出稀疏字典表示(键为(row,col),值为亮度)。
- 计算稠密矩阵的元素总数和非零元素个数,计算空间节省百分比。
【题目要求】
编写函数dense_to_sparse_dict将稠密矩阵转换为稀疏字典。输出转换后的字典及空间分析。输出格式参照示例。
【输出示例】
原始星图(稠密矩阵):
[0, 0, 0, 0, 0]
[0, 3, 0, 0, 5]
[0, 0, 0, 0, 0]
[0, 0, 2, 0, 0]
[0, 0, 0, 0, 7]
稀疏字典表示:
{(1, 1): 3, (1, 4): 5, (3, 2): 2, (4, 4): 7}
性能对比演示:
星图大小: 5 x 5 = 25 个像素
非零元素(星星): 4 个
稀疏度: 84.00%
稠密存储空间: O(n²) = O(25)
稀疏存储空间: O(k) = O(4)
空间节省: 84.00%
试题27:传统节日知识问答
【题目描述】
设计一个中国传统节日知识问答系统,能快速判断用户输入的节日是否为中国传统节日,并给出节日介绍。已知传统节日列表如下:
["春节", "元宵节", "清明节", "端午节", "七夕节", "中元节", "中秋节", "重阳节", "冬至", "腊八节", "小年", "除夕", "龙抬头", "寒食节", "下元节"]
部分节日有详细介绍(存储在字典中)。要求分别用列表遍历和集合成员判断两种方式实现查询,并对比两种方法的查找速度。
用户交互:循环接收用户输入,输入“退出”结束程序。每次查询输出结果,并显示两种方法的查找耗时及速度比。
【题目要求】
实现FestivalQuiz类,包含列表和集合两种存储方式,以及check_festival_list和check_festival_set方法。主程序循环接收输入,对每个查询输出两种方法的查找结果和耗时。输出格式参照示例。
【输出示例】
系统初始化完成! 系统中包含 15 个传统节日 集合大小:15 === 中国传统节日知识问答系统 === 已知传统节日: 春节, 元宵节, 清明节, 端午节, 七夕节, 中元节, 中秋节, 重阳节, 冬至, 腊八节, 小年, 除夕, 龙抬头, 寒食节, 下元节 输入'退出'结束程序 请输入一个节日名称:春节 ✅ 正确!春节是中国传统节日 📖 知识介绍:农历正月初一,中国最重要的传统节日,象征新年开始 ⏱️ 列表查找耗时:0.000010秒 ⚡ 集合查找耗时:0.000005秒 🚀 集合查找速度是列表的 2.3 倍! -------------------------------------------------- 请输入一个节日名称:圣诞节 ❌ 错误!圣诞节不是中国传统节日 ⏱️ 列表查找耗时:0.000008秒 ⚡ 集合查找耗时:0.000005秒 🚀 集合查找速度是列表的 1.5 倍! -------------------------------------------------- 请输入一个节日名称:退出
试题28:零食采购大作战
【题目描述】
你有一个容量为10的背包,有4种零食,每种零食的体积和价值如下:
- 零食1: 体积2, 价值3
- 零食2: 体积3, 价值4
- 零食3: 体积4, 价值5
- 零食4: 体积5, 价值6
要求:
- 若每种零食只能选一次(01背包),求最大总价值。
- 若每种零食可以选无限次(完全背包),求最大总价值。
- 若前两种零食只能选一次(01背包),后两种可以选多次(完全背包),求最大总价值(混合背包)。
【题目要求】
实现01背包、完全背包、混合背包的动态规划解法(使用一维数组状态压缩)。输出每种情况的最大总价值。输出格式参照示例。
【输出示例】
=== 零食采购大作战 === 背包总容量: 10 可用零食: 零食1: 体积=2, 美味值=3 零食2: 体积=3, 美味值=4 零食3: 体积=4, 美味值=5 零食4: 体积=5, 美味值=6 01背包最大美味值: 13 完全背包最大美味值: 15 混合背包最大美味值: 13

