python机器人行走步数问题的解决

  

本文实例为大家分享了python机器人行走步数问题,供大家参考,具体内容如下

        # !/usr/bin/env python3   # - * -编码:utf - 8 - *   #文件名:robot_path.py   #作者: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。请问该机器人能够达到多少个格子吗?   类机器人:   #共用接口,判断是否超过K   def getDigitSum(自我,num):   sumD=0   而(num> 0):   全国矿工工会sumD +=% 10   num/=10   返回int (sumD)      def PD_K(自我、行关口,K):   sumK=self.getDigitSum(行)+ self.getDigitSum(峡路)   如果sumK比;凯西:   返回假   其他:   还真      def PD_K1(自我,i, j, k):   “确定该位置是否可以走,将复杂约束条件设定”   指数=地图(str (i, j))   sum_ij=0   x在指数:   在x y:   sum_ij +=int (y)   如果sum_ij & lt;=k:   还真   其他:   返回假      #共用接口,打印遍历的访问二维列表   def printMatrix(自我、矩阵、r、c):   打印(“坏蛋位置(“r”、“, c”)”)   x在矩阵:   在x y:   打印(y,结束=')   print ()      #回溯法   def hasPath(自我、阈值、行峡路):   访问=[[0 j的范围(关口)]我的范围(行)]   数=0   startx=0   starty=0   #打印(阈值、行关口,访问)   访问=自我。findPath(阈值、行关口,参观、startx starty, 1, 1)   x访问:   在x y:   如果(y==1):   数+=1   打印(访问)   返回数      def findPath(自我、阈值、行关口,访问,curx,卷曲,大学校长,猎物):   如果0 & lt;=curx & lt;行和0 & lt;=卷曲& lt;关口和自我。PD_K1 (curx、卷曲、阈值)和访问[curx][卷曲]!=1:#判断当前点是否满足条件   访问[curx][卷曲)=1   自我。printMatrix(访问curx卷曲)   大学校长=curx   猎物=卷曲   如果卷曲+ 1 & lt;关口和自我。PD_K1 (curx,卷曲+ 1,阈值)和访问[curx][卷曲+ 1]!=1:#东方   访问[curx][卷曲+ 1)=1   回归自我。findPath(阈值、行关口,访问,curx,卷曲+ 1,大学校长,猎物)   elif cury-1祝辞=0和自我。PD_K1 (curx cury-1阈值)和访问[curx] [cury-1] !=1: #西方   访问[curx] [cury-1]=1   回归自我。findPath(阈值、行关口,参观、curx cury-1,大学校长,猎物)   elif curx + 1 & lt;行和自我。PD_K1 (curx + 1、卷曲、阈值)和访问[curx + 1][卷曲]!=1:#一幕   访问[curx + 1][卷曲)=1   回归自我。findPath(阈值、行关口,访问,curx + 1,卷曲,大学校长,猎物)   elif 0 & lt;=curx-1和自我。PD_K1 (curx-1、卷曲、阈值)和访问[curx-1][卷曲]!=1:#北   访问[curx-1][卷曲)=1   回归自我。findPath(阈值、行关口,访问,curx-1,卷曲,大学校长,猎物)   其他:#返回上一层,此处有问题   返回访问#自我。findPath(阈值、行关口,访问,curx,卷曲,大学校长,猎物)   #回溯法2   def movingCount(自我、阈值、行峡路):   访问=[[0 j的范围(关口)]我的范围(行)]   打印(访问)   数=自我。movingCountCore(阈值、行关口,0,0,访问);   打印(访问)   返回数      def movingCountCore(自我、阈值、行关口,行,坳,访问):   cc=0   如果(自我。检查(阈值、行关口、行坳,访问)):   参观【行】(col)=1   cc=1 +自我。movingCountCore(阈值、行关口,行+ 1,坳,访问)+自我。movingCountCore(阈值、行关口、行坳+ 1,访问)+自我。movingCountCore(阈值、行关口,第1行,坳,访问)+自我。movingCountCore(阈值、行关口、行col-1,访问)   返回cc      def检查(自我、阈值、行关口,行,坳,访问):   如果(0 & lt;=行& lt;行和0 & lt;=坳& lt;关口和(self.getDigitSum(行)+ self.getDigitSum (col)) & lt;=阈值和访问(行)(col) !=1):   返回True;   返回假      #暴力法,直接用当前坐标和K比较   def力(自我、行关口,k):   数=0   因为我在范围内(行):   j的范围(峡路):   如果自我。PD_K (i, j, k):   数+=1   返回数   2 #暴力法,用递归法来做   def块(自我、r、c k):   s=总和(map (int, str (r) + str (c)))   返回s> k   def con_visited(自我、行峡路):   访问=[[0 j的范围(关口)]我的范围(行)]   返回去   def traval(自我、r、c、行关口,k,访问):   如果不是(0 & lt;=r

python机器人行走步数问题的解决