日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

深度优先遍历算法-01小偷偷东西问题

發(fā)布時(shí)間:2024/4/11 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度优先遍历算法-01小偷偷东西问题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

小偷偷東西問題

  • 前言
    • 深度優(yōu)先遍歷是經(jīng)典的圖論算法,深度優(yōu)先遍歷算法的搜索邏輯和它的名字一樣,只要有可能,就盡量深入搜索,直到找到答案,或者嘗試了所有可能后確定沒有解。
    • 簡單來說,深度優(yōu)先遍歷就是按照某規(guī)則(如檢索當(dāng)前節(jié)點(diǎn)的第一個(gè)子節(jié)點(diǎn))檢索某個(gè)節(jié)點(diǎn),直到檢索完畢再去檢索其他節(jié)點(diǎn)。
    • 搜索問題的本質(zhì)就是試探問題的所有可能選擇,按照特定的規(guī)律和順序,不斷去搜索答案,直到找到問題的解。如果把所有可能都走了一遍,還沒有找到解,就說明這個(gè)問題沒有解。注意:深度優(yōu)先遍歷一定要按照規(guī)則嘗試所有的可能。
    • 深度優(yōu)先遍歷是圖論的經(jīng)典算法,從某個(gè)節(jié)點(diǎn)v出發(fā)開始進(jìn)行搜索,不斷搜索直到該節(jié)點(diǎn)的所有邊都被遍歷完。當(dāng)節(jié)點(diǎn)v的所有邊都被遍歷以后,深度優(yōu)先遍歷算法則需要回溯到v的前驅(qū)節(jié)點(diǎn),來繼續(xù)搜索這個(gè)前驅(qū)節(jié)點(diǎn)的其他邊。如果還存在尚未被遍歷的節(jié)點(diǎn),則深度優(yōu)先遍歷算法會(huì)按照統(tǒng)一的規(guī)則從這些剩下的節(jié)點(diǎn)中選擇一個(gè)節(jié)點(diǎn)再重復(fù)同樣的遍歷過程。這樣的搜索過程從最開始的節(jié)點(diǎn)一直持續(xù)到最后一個(gè)節(jié)點(diǎn)的所有邊都遍歷完。
    • 二叉樹的先序、后序和中序都屬于深度優(yōu)先遍歷,層序遍歷屬于廣度優(yōu)先遍歷。(關(guān)于二叉樹的數(shù)據(jù)結(jié)構(gòu)只是不提)
  • 問題描述
    • 有一個(gè)小區(qū)的別墅按照二叉樹結(jié)構(gòu)分布,也就是說,除了第一個(gè)別墅,其余每個(gè)別墅都和另一個(gè)“父”別墅連接?,F(xiàn)在有個(gè)小偷,想要進(jìn)入別墅偷竊,但是,一旦進(jìn)入兩個(gè)直接連接的別墅(只會(huì)有一段線相連),警報(bào)會(huì)觸發(fā),每個(gè)節(jié)點(diǎn)的值表示別墅財(cái)務(wù)的價(jià)值,問如何走在不報(bào)警的情況下偷得最多財(cái)物。
  • 問題分析
    • 對于上圖,顯然我選擇頭4和5這兩個(gè)別墅,得到最多財(cái)物。
    • 顯然,一旦選擇了某個(gè)節(jié)點(diǎn),就意味著放棄所有的這個(gè)節(jié)點(diǎn)的直接子節(jié)點(diǎn)(在下一層與之相連的節(jié)點(diǎn))。
    • 不妨定義節(jié)點(diǎn)這個(gè)數(shù)據(jù)結(jié)構(gòu)記錄當(dāng)前節(jié)點(diǎn)的價(jià)值,以及偷了該節(jié)點(diǎn)得到的價(jià)值和不偷該節(jié)點(diǎn)得到的價(jià)值。很容易發(fā)現(xiàn),每個(gè)節(jié)點(diǎn)的偷值是左側(cè)子節(jié)點(diǎn)的不偷值+右側(cè)子節(jié)點(diǎn)的不偷值+節(jié)點(diǎn)的價(jià)值,每個(gè)節(jié)點(diǎn)的不偷值是左側(cè)子節(jié)點(diǎn)的最大值(偷與不偷中較大者)+右側(cè)子節(jié)點(diǎn)的最大值。
    • 那么想要得到根節(jié)點(diǎn)的偷與不偷值,只要知道其子節(jié)點(diǎn)的,其子節(jié)點(diǎn)的又是來自子節(jié)點(diǎn)的子節(jié)點(diǎn)的,顯然,這是一個(gè)遞歸過程,最底層節(jié)點(diǎn)的屬性值一開始是確定的,用來構(gòu)造父節(jié)點(diǎn)的屬性值。最后輸出根節(jié)點(diǎn)的兩值較大者即可。
  • 代碼
    • # -*-coding:utf-8-*-class TreeNode:def __init__(self, x, l, r):self.value = xself.left = lself.right = rdef get_value(root):rst = search(root)return max(rst[0], rst[1])def search(root):"""返回二維數(shù)組[偷值,不偷值]:param root::return:"""if root is None:return [0, 0]left = search(root.left)right = search(root.right)rob_value = root.value + left[1] + right[1]skip_value = max(left[0], left[1]) + max(right[0], right[1])return rob_value, skip_valueif __name__ == '__main__':f = TreeNode(1, None, None)e = TreeNode(3, None, None)d = TreeNode(1, None, None)b = TreeNode(4, d, e)c = TreeNode(5, f, None)a = TreeNode(3, b, c)print(get_value(a))
  • 補(bǔ)充說明
    • 具體代碼可以查看我的Github,歡迎Star或者Fork
    • 參考書《你也能看得懂的Python算法書》
    • 顯然,這種思路適合求得最優(yōu)解,但是對于輸出具體路徑略顯麻煩。

總結(jié)

以上是生活随笔為你收集整理的深度优先遍历算法-01小偷偷东西问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 少妇高潮迭起 | www一区二区 | 日本三级一区二区三区 | 免费在线观看毛片视频 | 日本欧美不卡 | 91精品又粗又猛又爽 | 国产sm主人调教女m视频 | 精品久久久影院 | 美女调教视频 | 热久久精品免费视频 | 日本亲与子乱人妻hd | 丝袜理论片在线观看 | 日批av| av激情久久 | 国产精品二区视频 | 极品91尤物被啪到呻吟喷水 | 美痴女~美人上司北岛玲 | 国产三级直播 | 欧美久久久影院 | 免费观看久久久 | 国产精品视频第一页 | 日韩短视频 | 亚洲美女视频在线观看 | 四虎影城库 | 日韩bbw | 黑人一级 | 天天操夜夜拍 | 一区二区三区国产精品 | 日韩精品在线网站 | 国产精品视频播放 | 99热最新| 日本肉体xxxⅹ裸体交 | 亚洲国产成人精品一区二区三区 | 在线观看免费av片 | 性色av免费| 午夜av片 | 精品国产三级 | 女人扒开腿让男人捅爽 | 狐狸视频污 | 美国色综合 | 国内一区二区三区 | 国产明星换脸xxxx色视频 | 99视频免费在线观看 | 日本极品丰满ⅹxxxhd | 中文字幕一区二区人妻电影 | 一区二区福利 | 在线观看a网站 | 777四色| 精品一区二区三区三区 | 黑花全肉高h湿play短篇 | √天堂中文官网8在线 | 免费看污片网站 | 天堂在线视频网站 | 成人综合站 | 国产伦精品一区二区三 | 久久成人在线视频 | 国产成人精品白浆久久69 | av嫩草| 亚欧洲精品在线视频免费观看 | 欧美亚洲在线观看 | 亚洲制服一区二区 | 日韩免费av网站 | 国产精品无码成人网站视频 | 伦hdwww日本bbw另类 | 国产精品77777 | 亚洲国产综合久久 | 亚洲免费成人网 | 色哟哟一区| 亚洲av女人18毛片水真多 | 黄色aaaaa | 国产做爰免费视频观看 | 国产激情久久久 | 中文字幕在线播放第一页 | 国产精品jizz视频 | 日韩综合久久 | 亚洲国产精品免费 | 91直接进入 | 热re99久久精品国产99热 | 亚洲国产精品成人午夜在线观看 | 久久国产美女视频 | av免费在线观 | 精品人妻人伦一区二区有限公司 | 欧美中文字幕 | 午夜啪啪福利视频 | 熟妇人妻系列aⅴ无码专区友真希 | 黄色小视频在线播放 | 国产中文欧美日韩在线 | 欧美成人免费在线视频 | 中国一级大黄大黄大色毛片 | 青青青手机视频在线观看 | 国产日韩精品久久 | 人人草人人爽 | 久久精品国产清自在天天线 | 迈开腿让我尝尝你的小草莓 | 亚洲乱码精品 | 高清日韩一区 | 亚洲xx网 | www,久久久 | 免费a级片视频 |