计算思维导论 · 2026秋季 · 专题讲座:算法与算法类问题求解 谢在鹏(河海大学计算机系) 1. 贪心算法示例 nearest_neighbor.c 每轮选择距离最近的未访问校门,等距选编号最小者,访问完后返回起点。 A=0(东门)、B=1(南门)、C=2(西门)、D=3(北门)。 从A出发:A-B-C-D-A,总路程13。 从C出发:C-D-B-A-C,总路程14;该起点的最优路线成本为13。 这个规则不保证全局最优。程序同时检查单地点、等距选择及重复调用。 示例包含main函数,供在自己的C语言环境中运行,不作为代码考核要求。 距离表已写在源码里,程序不会自动读取CSV。 函数适用输入:1至32个地点,合法起点,完整、有限、非负且对角线为0的距离矩阵。 2. 四门距离表 gate_distances.csv 第一列是出发校门,后四列是到达A、B、C、D的距离,单位为教学千米。 距离固定、非负、对称,不考虑时间窗。数值为课堂示例,不用于导航。 任务:从指定校门出发,访问其余校门各一次,最后返回起点。 3. 所属关系 campus_hierarchy.csv node_id:地点编号;name:地点名;parent_id:直接所属的父节点编号。 -1表示根节点没有父节点。编号0至6独立于校门编号。 这里的边表示所属关系,不表示道路或访问顺序。 4. 活动安排 activities.csv activity:活动编号;start_time、end_time:同一天的开始与结束时间。 一个活动室,活动不可拆分,不计布置时间,目标是安排最多场活动。 前一场结束时刻等于后一场开始时刻时,两场兼容。 5. 背包练习 knapsack_items.csv item:物品编号;weight_kg:重量(千克);value:价值分数。 容量6千克,每件物品最多选一次且不可拆分。目标是总重量不超过容量时总价值最大。 比较“优先选价值最高的可放入物品”的贪心规则和穷举全部组合的方法。 建议先用纸笔、图表推演,再选择是否运行程序。