一 说明:
在做DFS题目时,本人经常使用dict、list和queue;然而,在进行程序递归时,这些变量一经修改,则无法复原。因此,尝试通过将其赋值给新变量,从而避免产生上述问题。
二 解决方案:
2.1 对于字典,在给新字典的键值赋值时,使用“[::]”符号获得原字典相应键的值(这里的值是list类型):
# ## 0 传递字典数据;用来更新障碍周围所需的灯数
new_barrier_dict = {}
for keyi in barrier_dict.keys():
new_barrier_dict[keyi] = barrier_dict[keyi][::]
# new_barrier_dict[keyi] = barrier_dict[keyi] # 不要写成这样,否则新旧字典均被更新
2.2 对于矩阵而言,逐点获得矩阵元素,然后重新赋值给新队列:
# 填充所在行和所在列的元素
new_Data = []
for rr in range(len(Data)):
temp = []
for cc in range(len(Data[0])):
temp.append(Data[rr][cc])
new_Data.append(temp)
# new_Data = Data # 不要这样写,否则新旧矩阵均实时更新
2.3 对于队列而言,为新队列首先添加一个元素,然后再将原队列的元素添加到新队列中:
## 0.1 存储当前该灯的位置
lamp_str = str(ni_rr) + ';' + str(ni_cc);
if lamp_str not in self.