过河卒问题递归写法求助
模仿马踏棋盘写了下过河卒问题,为什么只显示第一组解就中断了啊。马踏棋盘这样写结果好像是对的。
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) 解决了。 解决了!
页:
[1]