python实现机器人行走效果
本文实例为大家分享了python实现机器人行走效果的具体代码,供大家参考,具体内容如下
#!/usr/bin/envpython3
#-*-coding:utf-8-*-
#fileName:robot_path.py
#author:zoujiameng@aliyun.com.cn
#地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。
#例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7=18。但是,它不能进入方格(35,38),因为3+5+3+8=19。请问该机器人能够达到多少个格子?
classRobot:
#共用接口,判断是否超过K
defgetDigitSum(self,num):
sumD=0
while(num>0):
sumD+=num%10
num/=10
returnint(sumD)
defPD_K(self,rows,cols,K):
sumK=self.getDigitSum(rows)+self.getDigitSum(cols)
ifsumK>K:
returnFalse
else:
returnTrue
defPD_K1(self,i,j,k):
"确定该位置是否可以走,将复杂约束条件设定"
index=map(str,[i,j])
sum_ij=0
forxinindex:
foryinx:
sum_ij+=int(y)
ifsum_ij<=k:
returnTrue
else:
returnFalse
#共用接口,打印遍历的visited二维list
defprintMatrix(self,matrix,r,c):
print("curlocation(",r,",",c,")")
forxinmatrix:
foryinx:
print(y,end='')
print()
#回溯法
defhasPath(self,threshold,rows,cols):
visited=[[0forjinrange(cols)]foriinrange(rows)]
count=0
startx=0
starty=0
#print(threshold,rows,cols,visited)
visited=self.findPath(threshold,rows,cols,visited,startx,starty,-1,-1)
forxinvisited:
foryinx:
if(y==1):
count+=1
print(visited)
returncount
deffindPath(self,threshold,rows,cols,visited,curx,cury,prex,prey):
if0<=curx=0andself.PD_K1(curx,cury-1,threshold)andvisited[curx][cury-1]!=1:#west
visited[curx][cury-1]=1
returnself.findPath(threshold,rows,cols,visited,curx,cury-1,prex,prey)
elifcurx+1k
defcon_visited(self,rows,cols):
visited=[[0forjinrange(cols)]foriinrange(rows)]
returnvisited
deftraval(self,r,c,rows,cols,k,visited):
ifnot(0<=r
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。