最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python機(jī)器人行走步數(shù)問(wèn)題的解決

 更新時(shí)間:2018年01月29日 13:42:36   作者:zoujm-hust12  
這篇文章主要為大家詳細(xì)介紹了python機(jī)器人行走步數(shù)問(wèn)題的解決,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了python機(jī)器人行走步數(shù)問(wèn)題,供大家參考,具體內(nèi)容如下

#! /usr/bin/env python3 
# -*- coding: utf-8 -*- 
# fileName : robot_path.py 
# author : zoujiameng@aliyun.com.cn 
 
# 地上有一個(gè)m行和n列的方格。一個(gè)機(jī)器人從坐標(biāo)0,0的格子開始移動(dòng),每一次只能向左,右,上,下四個(gè)方向移動(dòng)一格,但是不能進(jìn)入行坐標(biāo)和列坐標(biāo)的數(shù)位之和大于k的格子。  
# 例如,當(dāng)k為18時(shí),機(jī)器人能夠進(jìn)入方格(35,37),因?yàn)?+5+3+7 = 18。但是,它不能進(jìn)入方格(35,38),因?yàn)?+5+3+8 = 19。請(qǐng)問(wèn)該機(jī)器人能夠達(dá)到多少個(gè)格子? 
class Robot: 
# 共用接口,判斷是否超過(guò)K 
  def getDigitSum(self, num): 
    sumD = 0 
    while(num>0): 
      sumD+=num%10 
      num/=10 
    return int(sumD) 
 
  def PD_K(self, rows, cols, K): 
    sumK = self.getDigitSum(rows) + self.getDigitSum(cols) 
    if sumK > K: 
      return False 
    else: 
      return True 
 
  def PD_K1(self, i, j, k): 
    "確定該位置是否可以走,將復(fù)雜約束條件設(shè)定" 
    index = map(str,[i,j]) 
    sum_ij = 0 
    for x in index: 
      for y in x: 
        sum_ij += int(y) 
    if sum_ij <= k: 
      return True 
    else: 
      return False 
 
# 共用接口,打印遍歷的visited二維list 
  def printMatrix(self, matrix, r, c): 
    print("cur location(", r, ",", c, ")") 
    for x in matrix: 
      for y in x:  
        print(y, end=' ') 
      print() 
 
 #回溯法 
  def hasPath(self, threshold, rows, cols): 
    visited = [ [0 for j in range(cols)] for i in range(rows) ] 
    count = 0 
    startx = 0 
    starty = 0 
    #print(threshold, rows, cols, visited) 
    visited = self.findPath(threshold, rows, cols, visited, startx, starty, -1, -1) 
    for x in visited: 
      for y in x: 
        if( y == 1): 
          count+=1 
    print(visited) 
    return count 
 
  def findPath(self, threshold, rows, cols, visited, curx, cury, prex, prey): 
    if 0 <= curx < rows and 0 <= cury < cols and self.PD_K1(curx, cury, threshold) and visited[curx][cury] != 1: # 判斷當(dāng)前點(diǎn)是否滿足條件 
      visited[curx][cury] = 1 
    self.printMatrix(visited, curx, cury) 
    prex = curx 
    prey = cury 
    if cury+1 < cols and self.PD_K1(curx, cury+1, threshold) and visited[curx][cury+1] != 1: # east 
      visited[curx][cury+1] = 1 
      return self.findPath(threshold, rows, cols, visited, curx, cury+1, prex, prey) 
    elif cury-1 >= 0 and self.PD_K1(curx, cury-1, threshold) and visited[curx][cury-1] != 1: # west 
      visited[curx][cury-1] = 1 
      return self.findPath(threshold, rows, cols, visited, curx, cury-1, prex, prey) 
    elif curx+1 < rows and self.PD_K1(curx+1, cury, threshold) and visited[curx+1][cury] != 1: # sourth 
      visited[curx+1][cury] = 1 
      return self.findPath(threshold, rows, cols, visited, curx+1, cury, prex, prey) 
    elif 0 <= curx-1 and self.PD_K1(curx-1, cury, threshold) and visited[curx-1][cury] != 1: # north 
      visited[curx-1][cury] = 1 
      return self.findPath(threshold, rows, cols, visited, curx-1, cury, prex, prey) 
    else: # 返回上一層,此處有問(wèn)題 
      return visited#self.findPath(threshold, rows, cols, visited, curx, cury, prex, prey) 
 #回溯法2 
  def movingCount(self, threshold, rows, cols): 
    visited = [ [0 for j in range(cols)] for i in range(rows) ] 
    print(visited) 
    count = self.movingCountCore(threshold, rows, cols, 0, 0, visited); 
    print(visited) 
    return count 
 
  def movingCountCore(self, threshold, rows, cols, row, col, visited): 
    cc = 0 
    if(self.check(threshold, rows, cols, row, col, visited)):  
      visited[row][col] = 1 
      cc = 1 + self.movingCountCore(threshold, rows, cols, row+1, col,visited) + self.movingCountCore(threshold, rows, cols, row, col+1, visited) + self.movingCountCore(threshold, rows, cols, row-1, col, visited) + self.movingCountCore(threshold, rows, cols, row, col-1, visited) 
    return cc 
 
  def check(self, threshold, rows, cols, row, col, visited): 
    if( 0 <= row < rows and 0 <= col < cols and (self.getDigitSum(row)+self.getDigitSum(col)) <= threshold and visited[row][col] != 1):  
      return True; 
    return False  
 
# 暴力法,直接用當(dāng)前坐標(biāo)和K比較 
  def force(self, rows, cols, k): 
    count = 0 
    for i in range(rows): 
      for j in range(cols): 
        if self.PD_K(i, j, k): 
          count+=1 
    return count 
# 暴力法2, 用遞歸法來(lái)做 
  def block(self, r, c, k):  
    s = sum(map(int, str(r)+str(c))) 
    return s>k 
  def con_visited(self, rows, cols): 
    visited = [ [0 for j in range(cols)] for i in range(rows) ] 
    return visited 
  def traval(self, r, c, rows, cols, k, visited): 
    if not (0<=r<rows and 0<=c<cols): 
      return 
    if visited[r][c] != 0 or self.block(r, c, k): 
      visited[r][c] = -1 
      return 
    visited[r][c] = 1 
    global acc 
    acc+=1 
    self.traval(r+1, c, rows, cols, k, visited) 
    self.traval(r, c+1, rows, cols, k, visited) 
    self.traval(r-1, c, rows, cols, k, visited) 
    self.traval(r, c-1, rows, cols, k, visited) 
    return acc 
 
if __name__ == "__main__": 
  # 調(diào)用測(cè)試 
  m = 3 
  n = 3 
  k = 1 
  o = Robot() 
  print(o.hasPath(k, m, n)) 
  print(o.force(m,n,k)) 
  global acc 
  acc = 0 
  print(o.traval(0, 0, m, n, k, o.con_visited(m,n))) 
  print(o.movingCount(k, m, n)) 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python自動(dòng)化之re模塊詳解

    python自動(dòng)化之re模塊詳解

    這篇文章主要為大家介紹了python自動(dòng)化之re模塊,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • python去重,一個(gè)由dict組成的list的去重示例

    python去重,一個(gè)由dict組成的list的去重示例

    今天小編就為大家分享一篇python去重,一個(gè)由dict組成的list的去重示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • Python 多進(jìn)程原理及實(shí)現(xiàn)

    Python 多進(jìn)程原理及實(shí)現(xiàn)

    這篇文章主要介紹了Python 多進(jìn)程原理及實(shí)現(xiàn),幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • Python采用socket模擬TCP通訊的實(shí)現(xiàn)方法

    Python采用socket模擬TCP通訊的實(shí)現(xiàn)方法

    這篇文章主要介紹了Python采用socket模擬TCP通訊的實(shí)現(xiàn)方法,程序分為TCP的server端與client端兩部分,分別對(duì)這兩部分進(jìn)行了較為深入的分析,需要的朋友可以參考下
    2014-11-11
  • django models里數(shù)據(jù)表插入數(shù)據(jù)id自增操作

    django models里數(shù)據(jù)表插入數(shù)據(jù)id自增操作

    這篇文章主要介紹了django models里數(shù)據(jù)表插入數(shù)據(jù)id自增操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • python實(shí)現(xiàn)tail -f 功能

    python實(shí)現(xiàn)tail -f 功能

    這篇文章主要介紹了python實(shí)現(xiàn)tail -f 功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Python中關(guān)于logging模塊的學(xué)習(xí)筆記

    Python中關(guān)于logging模塊的學(xué)習(xí)筆記

    在本篇文章里小編給大家整理的是一篇關(guān)于Python中l(wèi)ogging模塊相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們可以參考下。
    2020-06-06
  • 如何修改新版Python的pip默認(rèn)安裝路徑

    如何修改新版Python的pip默認(rèn)安裝路徑

    pip安裝的第三方庫(kù)默認(rèn)存放在C盤中,為了便于管理和不過(guò)度占用C盤空間所以想修改默認(rèn)的pip路徑,這篇文章主要介紹了修改新版Python的pip默認(rèn)安裝路徑的過(guò)程,需要的朋友可以參考下
    2024-03-03
  • Python實(shí)現(xiàn)讀取并寫入Excel文件過(guò)程解析

    Python實(shí)現(xiàn)讀取并寫入Excel文件過(guò)程解析

    這篇文章主要介紹了Python實(shí)現(xiàn)讀取并寫入Excel文件過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • python3解析庫(kù)pyquery的深入講解

    python3解析庫(kù)pyquery的深入講解

    做過(guò)前端開發(fā)的同志都應(yīng)該知道或了解過(guò)jquery,jQuery 是一個(gè)用來(lái)處理DOM的JavaScript庫(kù)。pyquery說(shuō)白了就是jquery的Python版本。下面這篇文章主要給大家介紹了關(guān)于python3解析庫(kù)pyquery的相關(guān)資料,需要的朋友可以參考下
    2018-06-06

最新評(píng)論

靖宇县| 文水县| 南京市| 乌审旗| 铁力市| 台东市| 扎赉特旗| 天等县| 定陶县| 藁城市| 威信县| 乳山市| 诸城市| 沙坪坝区| 调兵山市| 凯里市| 涪陵区| 广元市| 元谋县| 博白县| 布尔津县| 安康市| 安龙县| 施甸县| 黄梅县| 陇川县| 深圳市| 惠安县| 扶绥县| 江安县| 云南省| 罗源县| 广饶县| 巨野县| 英吉沙县| 仁寿县| 南通市| 阜宁县| 宜兰市| 延安市| 鄯善县|