def main(): lst=[2,3,4,4,1,2,2,5,2,2,4] i = 0 while 1: if walk(lst[:], i): #print i break i+=1 def walk(lst, i): a=lst[i] lst[i] = 0 ppp = 0 for s in lst: ppp += s if s: break if ppp == 0: print i, a return True p1=a+i p2=i-a p1 = fixpos(len(lst), p1) p2 = fixpos(len(lst), p2) try: if lst[p1] == 0 and lst[p2] == 0: return False except: print p1,p2 raise if walk(lst[:], p1): print i,a return True if walk(lst[:], p2): print i,a return True return False def fixpos(l,p): if p >= l: p = p-l if p < (0-l): p +=l return p if __name__ == ‘__main__‘: main()
原文:http://my.oschina.net/fdayok/blog/389997