Python 带条件的二维网格路径搜索

Python 带条件的二维网格路径搜索,python,Python,假设我们有一个网格{a,b},其中n0的条目为| b-a | 如何设计通过所有条目的路径,首先访问b-a的最高值 当我们越过边界a==b时,问题就出现了,因为我需要访问所有条目,在该边界我必须返回 我的第一个想法是: paths = {} for a in range(n,N-1): for b in range(a+1,N): if b-a not in paths: paths[b-a] = [(a,b)] else:

假设我们有一个网格{a,b},其中n0的条目为| b-a |

如何设计通过所有条目的路径,首先访问b-a的最高值

当我们越过边界a==b时,问题就出现了,因为我需要访问所有条目,在该边界我必须返回

我的第一个想法是:

paths = {}
for a in range(n,N-1):
    for b in range(a+1,N):
        if b-a not in paths:
            paths[b-a] = [(a,b)]
        else:
            paths[b-a] += [(a,b)]

for p in reversed(list(paths.key())):
    for q in paths[p]:
        visit(q)
问题是这个解决方案对big N占用了太多的内存。我曾考虑过一个类似的解决方案,它只使用迭代器而不使用字典,但我无法正确地为使用迭代器重新设计问题

有什么建议吗

//编辑:我解决了它,对于任何感兴趣的人:

class period_iter:
    def __init__(self,t0,t1):
        self.t0 = t0
        self.t1 = t1
    def __iter__(self):
        self.i = -1
        self.j = 0 
        return self
    def __next__(self):
        self.i += 1
        if self.i > self.j:
            self.i =  0   
            self.j += 1
        if self.j == (self.t1 - self.t0):
            raise StopIteration
        ti = t0 + self.i
        tf = self.t1-(self.j-self.i)
        return (ti,tf,tf-ti)