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

Python使用条件与运算符打印学生排课冲突方阵的实现咨询

答辩安排冲突矩阵生成实现方案

原代码核心问题

  • 索引逻辑错误:D1、D2是单个学生的元组,不需要嵌套循环遍历长度,D1[1]直接对应导师ID,D1[2]直接对应答辩委员会成员元组
  • 条件判断逻辑错误:未区分优先级,应优先判断「同时存在委员会冲突+导师冲突」的场景,再判断单一冲突场景,原代码未加括号明确逻辑运算范围,导致判断结果不符合预期
  • 循环范围缺失:外层循环只遍历到下标8,漏掉了第10个学生(下标9对应S10)
  • 缺少每行末尾的冲突统计逻辑

完整实现代码

数据定义

G = [('S1', 'A8', ('A1', 'A2', 'A3')), ('S2', 'A5', ('A1', 'A2', 'A3')), ('S3', 'A6', ('A3', 'A4', 'A5')), ('S4', 'A1', ('A6', 'A7', 'A8')), ('S5', 'A4', ('A6', 'A7', 'A8')), ('S6', 'A2', ('A9', 'A10', 'A11')), ('S7', 'A3', ('A8', 'A9', 'A10')), ('S8', 'A4', ('A12', 'A13', 'A10')), ('S9', 'A10', ('A12', 'A13', 'A14')), ('S10', 'A11', ('A12', 'A13', 'A7'))]

功能实现

def generate_conflict_matrix(G):
    n = len(G)
    # 矩阵多开1列存储每行冲突总数
    matrix = [[0]*(n+1) for _ in range(n)]
    for i in range(n):
        _, tutor_i, committee_i = G[i]
        conflict_count = 0
        for j in range(n):
            if i == j:
                matrix[i][j] = '-' # 自身无需判断冲突
                continue
            _, tutor_j, committee_j = G[j]
            # 分别判断两种冲突类型
            has_committee_conflict = len(set(committee_i) & set(committee_j)) > 0
            has_tutor_conflict = (tutor_i in committee_j) or (tutor_j in committee_i)
            
            if has_committee_conflict and has_tutor_conflict:
                matrix[i][j] = '1*'
                conflict_count += 1
            elif has_committee_conflict:
                matrix[i][j] = '1'
                conflict_count += 1
            elif has_tutor_conflict:
                matrix[i][j] = '*'
                conflict_count += 1
            else:
                matrix[i][j] = '0'
        # 写入该行冲突总数
        matrix[i][-1] = conflict_count
    return matrix

# 调用生成并格式化打印
conflict_matrix = generate_conflict_matrix(G)
print("学生\t" + "\t".join([f"S{i+1}" for i in range(10)]) + "\t冲突总数")
for idx, row in enumerate(conflict_matrix):
    print(f"S{idx+1}\t" + "\t".join(map(str, row)))

输出说明

运行代码后会输出符合规则的10行矩阵:

  • 前10列为对应两个学生的冲突标记,完全匹配你给出的4类冲突规则
  • 最后一列统计该行学生的总冲突数(所有非0标记的数量)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:18:01