在python中回溯,但如果满足条件则停止更深入

时间:2017-11-16 02:43:42

标签: python list backtracking

所以我理解了回溯的概念,并查看了代码here来实现简单的字符串置换算法。

我的问题如下:

我有一份表格的n个列表:

l = [[1,2,3],[4,3,2],[7,6,5],[1,2,9],[6,8]]

假设我按照元素出现次数最少的方式对这些列表进行排序,并将其放在字典中,其中键表示元素的出现次数,如下所示:

d = {1:[[7,6,5],[6,8],[4,3,2],[1,2,9]], 2:[[1,2,3],[1,2,9],[4,3,2],[7,6,5],[6,8]], 3:[[1,2,3],[4,3,2],[1,29]]}

那么字典代表的是:

  • 数字 4,5,7,8 9 只出现一次,因此包含它们的所有列表都会被放入一个包含 1
  • 数字 1,3 6 出现两次,包含它们的所有列表都会放入一个列表中,其中包含相应的键 2 。< / LI>
  • 数字 2 出现3次,因此包含该数字的所有列表都会放入包含 3 键的列表列表中。

现在,为了找到 1到9 这些数字的集合,我知道我需要使用所有列表 1 < / strong>即可。如果这满足整个范围从1到9(在这种情况下确实如此),我的工作就完成了。否则,我需要在与 2 对应的列表列表中回溯EACH列表,如果我找到满足的组合,我就停止。如果它们都不满足,我会移动到与 3 键相对应的列表。

如何在python中实现这一点,这是实现它的好方法吗?

我意识到这个问题很难用简单的英语解释,所以如果不清楚,请告诉我。

0 个答案:

没有答案