深度優(yōu)先遍歷

核心偽代碼

boolean[] visited;
boolean DFS(Node n, int d){
    visited = new boolean[n.size()]
    if(isEnd(n, d)){    //達到一個滿足狀態(tài) 可能是遍歷了所有節(jié)點 可能是找到了了一條路徑
        return true;
    }
    for(Node nextNode in n){
        if(visted[nextNode]) return false;  //當前節(jié)點已經搜索過了
        visited[nextNode] = true;
        if(DFS(nextNode, d+1)) return true;
        visited[nextNode] = false;  //如果當前節(jié)點的子節(jié)點搜索失敗 則將當前節(jié)點設置為為訪問繼續(xù)開始其他子節(jié)點                      
    return false;
    }
}

例題一

地上有一個m行和n列的方格。一個機器人從坐標0,0的格子開始移動,每一次只能向左泻拦,右,上忽媒,下四個方向移動一格争拐,但是不能進入行坐標和列坐標的數位之和大于k的格子。 例如晦雨,當k為18時架曹,機器人能夠進入方格(35,37),因為3+5+3+7 = 18闹瞧。但是绑雄,它不能進入方格(35,38),因為3+5+3+8 = 19夹抗。請問該機器人能夠達到多少個格子绳慎?

class Solution:
    def __init__(self):
        self._dict = {}
        self.count = 0
    
    def get_sum(self, i, j):
        num = 0
        while i:
            temp = i % 10
            i = i /10
            num += temp
        while j:
            temp = j %10
            j = j /10
            num += temp
        return num
    
    def dfs(self, matrix, k, i, j):
        if not (0 <= i < len(matrix) and 0 <= j < len(matrix[0])):
            return
        if self.get_sum(i, j) > k:
            return
        if self._dict.get((i,j)) is not None:
            return
        self._dict[(i,j)] = 1
        self.count += 1
        self.dfs(matrix, k, i+1, j)
        self.dfs(matrix, k, i-1, j)
        self.dfs(matrix, k, i, j+1)
        self.dfs(matrix, k, i, j-1)
    
    def movingCount(self, threshold, rows, cols):
        x = [[1 for i in range(cols)] for j in range(rows)]
        self.dfs(x, threshold, 0, 0)
        return self.count

例題二

請設計一個函數纵竖,用來判斷在一個矩陣中是否存在一條包含某字符串所有字符的路徑漠烧。路徑可以從矩陣中的任意一個格子開始,每一步可以在矩陣中向左靡砌,向右已脓,向上,向下移動一個格子通殃。如果一條路徑經過了矩陣中的某一個格子度液,則該路徑不能再進入該格子。 例如 a b c e s f c s a d e e 矩陣中包含一條字符串"bcced"的路徑画舌,但是矩陣中不包含"abcb"路徑堕担,因為字符串的第一個字符b占據了矩陣中的第一行第二個格子之后,路徑不能再次進入該格子曲聂。

class Solution:
    def __init__(self):
        self._dict = {}
    
    def hasPath(self, matrix, rows, cols, path):
        x = [list(matrix[i*cols:(i+1)*cols]) for i in range(rows)]
        for i in range(rows):
            for j in range(cols):
                self._dict = {}
                if(self.dfs(x, i ,j, path)):
                    return True
        return False
    
    def dfs(self, matrix, i, j, path):
        if not (0 <= i <len(matrix) and 0 <= j < len(matrix[0])):
            return False
        if matrix[i][j] != path[0]: #如果不等于path的當前字母 則不符合
            return False
        if self._dict.get((i,j)) is not None:
            return False
        self._dict[(i,j)] = 1
        if not path[1:]:
            return True
        return self.dfs(matrix, i+1, j, path[1:]) 
        return self.dfs(matrix, i-1, j, path[1:]) 
        return self.dfs(matrix, i, j+1, path[1:]) 
        return self.dfs(matrix, i, j-1, path[1:])
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末霹购,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子朋腋,更是在濱河造成了極大的恐慌齐疙,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旭咽,死亡現(xiàn)場離奇詭異贞奋,居然都是意外死亡,警方通過查閱死者的電腦和手機穷绵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門轿塔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事勾缭∏⒁椋” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵漫拭,是天一觀的道長亚兄。 經常有香客問我,道長采驻,這世上最難降的妖魔是什么审胚? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮礼旅,結果婚禮上膳叨,老公的妹妹穿的比我還像新娘。我一直安慰自己痘系,他們只是感情好菲嘴,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著汰翠,像睡著了一般龄坪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上复唤,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天健田,我揣著相機與錄音,去河邊找鬼佛纫。 笑死妓局,一個胖子當著我的面吹牛,可吹牛的內容都是我干的呈宇。 我是一名探鬼主播好爬,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼甥啄!你這毒婦竟也來了存炮?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤型豁,失蹤者是張志新(化名)和其女友劉穎僵蛛,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體迎变,經...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡充尉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了衣形。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驼侠。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡姿鸿,死狀恐怖,靈堂內的尸體忽然破棺而出倒源,到底是詐尸還是另有隱情苛预,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布笋熬,位于F島的核電站热某,受9級特大地震影響,放射性物質發(fā)生泄漏胳螟。R本人自食惡果不足惜昔馋,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望糖耸。 院中可真熱鬧秘遏,春花似錦、人聲如沸嘉竟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舍扰。三九已至倦蚪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間妥粟,已是汗流浹背审丘。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工吏够, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留勾给,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓锅知,卻偏偏與公主長得像播急,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子售睹,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內容