免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2745 | 回复: 1
打印 上一主题 下一主题

要疯了,看看哪里错了。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-01-06 04:28 |只看该作者 |倒序浏览
SZ=[[0,0,0,0,0,0,0,0,0,0,0,0],        #0 ist Mauer,1 ist Weg.
        [0,2,0,1,1,1,0,1,1,1,1,0],        #2 ist Start,9 ist Ende.
        [0,1,1,1,0,0,0,0,0,1,0,0],
        [0,1,0,1,1,1,0,1,1,1,0,0],
        [0,1,0,0,0,1,0,1,0,1,0,0],
        [0,1,1,1,0,1,1,1,0,1,0,0],
        [0,0,0,0,0,1,0,1,0,1,1,0],
        [0,1,0,1,0,1,0,0,0,0,1,0],
        [0,1,0,1,1,1,0,1,1,1,1,0],
        [0,1,0,1,0,0,0,1,0,0,0,0],
        [0,1,1,1,1,1,0,1,1,1,9,0],
        [0,0,0,0,0,0,0,0,0,0,0,0]]

#for i in range(1,len(SZ)-1):
#        for j in range(1,len(SZ[i])-1):
#                print ("SZ["),i,("]["),j,("] ist:"),SZ[i][j]

aStaple=[[],[]]

def Backtracking(ii,jj):
        mittel=SZ[ii][jj]
        print ii,jj
        if mittel==1 or mittel==2:                                        #wenn diese Position 1 ist.
                aStaple[0].append(ii)                                        #Push in aStaple
                aStaple[1].append(jj)
                SZ[ii][jj]=5
                Backtracking(hulr(ii,jj)[0],hulr(ii,jj)[1])
        elif mittel==9:
                        aStaple[0].append(ii)                                                                #aStaple zurueckgeben
                        aStaple[1].append(jj)
                        return mi,jj
        else:
                if len(aStaple[0])!=0 and len(aStaple[1])!=0:
                        aStaple[0].pop()
                        aStaple[1].pop()
                        print ("Jetzt ist Point:"),aStaple[0][-1],aStaple[1][-1]
                        Backtracking(aStaple[0][-1],aStaple[1][-1])

def hulr(mi,mj):
        if SZ[hoch(mi,mj)[0]][hoch(mi,mj)[1]]==1:
                return hoch(mi,mj)[0],hoch(mi,mj)[1]
        elif SZ[unten(mi,mj)[0]][unten(mi,mj)[1]]==1:
                return unten(mi,mj)[0],unten(mi,mj)[1]
        elif SZ[links(mi,mj)[0]][links(mi,mj)[1]]==1:
                return links(mi,mj)[0],links(mi,mj)[1]
        elif SZ[rechts(mi,mj)[0]][rechts(mi,mj)[1]]==1:
                print ("r;kjsdlk;kjl;jkl;"),mi,mj
                return rechts(mi,mj)[0],rechts(mi,mj)[1]
        else:
                print ("o;ajsdf"),mi,mj
                return mi,mj

def hoch(hi,hj):
        hi=hi
        hj=hj-1
        return hi,hj

def unten(ui,uj):
        ui=ui+1
        uj=uj
        return ui,uj

def links(li,lj):
        li=li-1
        lj=lj
        return li,lj

def rechts(ri,rj):
        ri=ri
        rj=rj+1
        return ri,rj

Backtracking(1,1)

print ("Weg ist:"),aStaple
print SZ

论坛徽章:
0
2 [报告]
发表于 2006-01-06 05:11 |只看该作者

已经解决

SZ=[[0,0,0,0,0,0,0,0,0,0,0,0],        #0 ist Mauer,1 ist Weg.
        [0,2,0,1,1,1,0,1,1,1,1,0],        #2 ist Start,9 ist Ende.
        [0,1,1,1,0,0,0,0,0,1,0,0],
        [0,1,0,1,1,1,0,1,1,1,0,0],
        [0,1,0,0,0,1,0,1,0,1,0,0],
        [0,1,1,1,0,1,1,1,0,1,0,0],
        [0,0,0,0,0,1,0,1,0,1,1,0],
        [0,1,0,1,0,1,0,0,0,0,1,0],
        [0,1,0,1,1,1,0,1,1,1,1,0],
        [0,1,0,1,0,0,0,1,0,0,0,0],
        [0,1,1,1,1,1,0,1,1,1,9,0],
        [0,0,0,0,0,0,0,0,0,0,0,0]]

#for i in range(1,len(SZ)-1):
#        for j in range(1,len(SZ[i])-1):
#                print ("SZ["),i,("]["),j,("] ist:"),SZ[i][j]

aStaple=[[],[]]

def Backtracking(ii,jj):
        mittel=SZ[ii][jj]
        if mittel==9:
                aStaple[0].append(ii)                                                                #aStaple zurueckgeben
                aStaple[1].append(jj)
                return ii,jj
        elif mittel==1 or mittel==2:                                        #wenn diese Position 1 ist.
                aStaple[0].append(ii)                                        #Push in aStaple
                aStaple[1].append(jj)
                SZ[ii][jj]=5
                Backtracking(hulr(ii,jj)[0],hulr(ii,jj)[1])
                return ii,jj
        elif mittel==5:
                SZ[ii][jj]=6
                Backtracking(hulr(ii,jj)[0],hulr(ii,jj)[1])               
        else:
                if len(aStaple[0])!=0 and len(aStaple[1])!=0:
                        aStaple[0].pop()
                        aStaple[1].pop()
                        print ("Jetzt ist Point:"),aStaple[0][-1],aStaple[1][-1]
                        Backtracking(aStaple[0][-1],aStaple[1][-1])

def hulr(mi,mj):
        if SZ[hoch(mi,mj)[0]][hoch(mi,mj)[1]]==1 or SZ[hoch(mi,mj)[0]][hoch(mi,mj)[1]]==9:
                return hoch(mi,mj)[0],hoch(mi,mj)[1]
        elif SZ[unten(mi,mj)[0]][unten(mi,mj)[1]]==1 or SZ[unten(mi,mj)[0]][unten(mi,mj)[1]]==9:
                return unten(mi,mj)[0],unten(mi,mj)[1]
        elif SZ[links(mi,mj)[0]][links(mi,mj)[1]]==1 or SZ[links(mi,mj)[0]][links(mi,mj)[1]]==9:
                return links(mi,mj)[0],links(mi,mj)[1]
        elif SZ[rechts(mi,mj)[0]][rechts(mi,mj)[1]]==1 or SZ[rechts(mi,mj)[0]][rechts(mi,mj)[1]]==9:
                return rechts(mi,mj)[0],rechts(mi,mj)[1]
        else:
                return mi,mj

def hoch(hi,hj):
        hi=hi
        hj=hj-1
        return hi,hj

def unten(ui,uj):
        ui=ui+1
        uj=uj
        return ui,uj

def links(li,lj):
        li=li-1
        lj=lj
        return li,lj

def rechts(ri,rj):
        ri=ri
        rj=rj+1
        return ri,rj


print ("Weg ist:"),aStaple
Backtracking(1,1)

print SZ
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP