小明的学校的礼堂有很多座位, 学生区礼堂开会时, 每次都要有可能有领导入座. 由于领导人数的不一, 老师每次都要给学生重新安排座位. 于是, 老师就让小明设计一个算法, 自动给学校的5个班级安排座位.
有一个座位集合S: 其中, S[i][j]=0代表在(i,j)处有一个空座位, S[i][j]=−1代表在(i,j)处没有座位或没有可用的座位.
S = [
[-1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[-1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[-1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[-1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[-1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[-1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[-1, -1, -1, -1, -1, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
]
你可以进行以下操作进行安排座位: 将S[i][j]=0调整为为S[i][j]=c, 其中c∈{1,2,3,4,5}.
令 Pc={(i,j)∣S[i][j]=c}, Ac={i∣S[i][j]=c,0≤j≤7}, Bc={i∣S[i][j]=c,8≤j≤18}.
你安排的座位需要满足以下条件:
你需要找到一种排座位的方法使得 ∑{(i−18)2+(j+2)2∣A[i][j]∈{1,2,3,4,5}}最小.
输出最终的排座位方法 S 即可.