hfyzm 发表于 2021-6-12 15:49:10

过河卒问题递归写法求助

模仿马踏棋盘写了下过河卒问题,为什么只显示第一组解就中断了啊。
马踏棋盘这样写结果好像是对的。
a=*25
p=[(1,2),(2,1),(2,-1),(1,-2),(-2,-1),(-1,-2),(-1,2),(-2,1)]
entry=(2,2)
s=0

def jiance(k):
    global a,p
    if a<0 or a>4 or a<0 or a>4:
      return 1
    if a in a[:k]:
      return 1
    else:
      return 0

def zou(k):
    global a,p,s
    if k==25:
      print(a)
      s=s+1
    else:
      for i in p:
            a=(a+i,a+i)
            if not jiance(k):
                zou(k+1)
   
a=entry
zou(1)
print(s)

过河卒这样写不知道错在哪了?

n,m,cx,cy=5,5,2,3
bu=[(0,1),(1,0)]
chi=[(cx,cy),(cx+1,cy-2),(cx+2,cy-1),(cx+2,cy+1),(cx+1,cy+2),(cx-1,cy+2),(cx-2,cy+1),(cx-2,cy-1),(cx-1,cy-2)]

a=*11
s=0

def jiance(k):
    global bu,chi,a,s
    for i in chi:
      if a==i and a==i:
            return 1
    return 0

def zou(k):
    global bu,chi,a,s,m,n
    if k==n+m+1 and a==5 and a==5 :
      print(a)
      s+=1
    else:
      for i in bu:
            a=(a+i,a+i)
            if not jiance(k):
                zou(k+1)
   
a=(0,0)
zou(1)
print(s)

hfyzm 发表于 2021-6-12 17:00:27

解决了。

hfyzm 发表于 2021-6-12 17:01:41

解决了!
页: [1]
查看完整版本: 过河卒问题递归写法求助