使用条件在二维中搜索通过网格的路径

时间:2014-05-19 18:11:36

标签: python

假设我们有一个带有条目| b-a |的网格{a,b}对于n< = a,b< N和| b-a | > 0.

如何设计所有条目的路径,我在哪里访问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)

问题是这个解决方案为大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)

0 个答案:

没有答案