地上有乙個m行和n列的方格。乙個機械人從座標0,0的格仔開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數字之和大於k的格仔。 例如,當k為18時,機械人能夠進入方格(35,37),因為3+5+3+7 = 18。但是,它不能進入方格(35,38),因為3+5+3+8 = 19。請問該機械人能夠達到多少個格仔?
classsolution:知識點:set() map() str() 函式defmovingcount(self
, threshold, rows, cols):
self.row,
self.col=rows,cols
self.dict=set()
self.search(threshold,0,
0)returnlen(self.dict)
defjudge(self
,threshold
,i,j):
returnsum(map(int
,list(str(i))))+sum(map(int
,list(str(j))))<=thresold
defsearch
(self
,threshold,i
,j):
if notself
.judge(i
,j)
or(i
,j)
inself
.dict:
returnself
.dict.add((i
,j))
ifi!=self.row-1:
self
.search(threshold,i+
1,j)
ifj!=self.col-1:
self
.search(threshold,i
,j+1)
其中,if not self.judge(threshold, i, j) or (i, j) in self.dict:的意思是
當i,j和大於threshold或i,j已經在dict中時 return none
returnsum(map(int這句很巧妙,記住。,list(str(i))))+sum(map(int
,list(str(j))))<=thresold
劍指offer第2版13題 機械人的運動範圍
小渣渣的演算法學習筆記 2018秋招備戰 資料結構類演算法總結 回溯法 1.題目描述 地上有乙個m行和n列的方格。乙個機械人從座標0,0的格仔開始移動,每一次只能向左,右,上,下四個方向移動 一格,但是不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 ...
劍指offer13題 機械人的運動範圍
地上有乙個m行n列的方格,從座標 0,0 到座標 m 1,n 1 乙個機械人從座標 0,0 的格仔開始移動,它每次可以向左 右 上 下移動一格 不能移動到方格外 也不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但它不能進入...
劍指offer第66題 機械人的運動範圍
原始碼地上有乙個m行和n列的方格。乙個機械人從座標0,0的格仔開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但是,它不能進入方格 35,38 因為3 5 3 8 1...