实现上述功能的Python程序如下,请在划线处填入合适的代码。
def mapcolor(adjamat): #自定义填色函数部分
signcolor=[0]*N
color = 1
signcolor[0] = 1
area = 1
while area < N:
while color <= 4:
if area >= N:
break
k = 0
# 以下代码判断区域是否重色
while (k < area) and (signcolor[k] * adjamat[area][k] != color):
k += 1
if (k < area):
color += 1
else:
#给该区域上色
area += 1
color = 1
if color > 4: # 没有找到合适的颜色,需要进行回溯
color = signcolor[area] + 1
return signcolor
#主程序部分
city = {1: '海游街道', 2: '海润街道', 3: '沙柳街道', 4: '亭旁镇', 5: '珠岙镇', 6: '横渡镇', 7: '蛇蟠乡', 8: '健跳镇', 9: '花桥镇', 10: '浦坝港镇'}
N =
colordict = {1: '红色', 2: '橙色', 3: '黄色', 4: '青色'}
adjamat = [[0 , 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0]
[1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 0]
[1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0]
[1 , 1 , 0 , 0 , 1 , 1 , 0 , 0 , 0 , 0]
[1 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0]
[0 , 1 , 0 , 1 , 0 , 0 , 0 , 0 , 1 , 1]
[0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0]
[0 , 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0]
[0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 1]
[0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 1 , 0]]
signcolor1 = mapcolor(adjamat)
print(signcolor1)
# zip 函数可以将多个序列,如列表、元组、字典、集合压缩成一个对象。
for key1,key2 in zip(city,signcolor1): #将相对应的区域与地图颜色输出
print(city[key1] + ":" + colordict[key2])