2019-08-13 拼多多筆試 第四題 Delivery

多多雞和同事們跑去大山里露營乱凿,總共有N座山倍试,所有的山按照編號從大到小分布在一條直線上。每座山的山頂上都有多多雞的同事亡嫌。露營需要持續(xù)一個月,多多雞負(fù)責(zé)露營物資的運送和垃圾的回收掘而,它需要每天開車去每座山的山頂一趟挟冠,第三種是山頂間的路。每座山都有對應(yīng)的第一種路和第二種路袍睡,某些山頂之間有第三種路相連知染。山頂間的路只有某些山頂之間有,并且只能從編號小的山開向編號大的山斑胜。
多多雞每天都需要從山底出發(fā)控淡,去到所有的山頂,運送物資給同事們止潘。因為山路的特殊性掺炭,他可能要來回山底山頂多次。現(xiàn)在多多雞想找出一個方案凭戴,可以保證每個山頂都去過至少一次的情況下涧狮,上山的次數(shù)盡可能少。
輸入描述:

第一行是兩個整數(shù)N和M,分別表示山的個數(shù)和第三種山路的數(shù)量者冤。(3<N<200, M<N*N)
接下來M行吧享,每行兩個數(shù)Xi和Yi。表示有從Xi山頂?shù)結(jié)i山頂?shù)穆贰?/p>

輸出描述:

共一行譬嚣,為最優(yōu)方案的上山次數(shù)钢颂。

示例1

輸入
5 4
1 3
2 3
3 4
3 5

輸出
2

說明

一種方案是
第一趟從山底開始到1號山的山頂,再到3號山的山頂拜银,再到5號山的山頂殊鞭,然后下山。
第二趟從山底開始到2號山的山頂尼桶,再到3號山的山頂操灿,再到4號山的山頂,然后下山泵督。

示例2

輸入
4 0

輸出
4

說明

因為山頂之間沒有路趾盐,只能上山4趟。

想用dfs搜索所有可能路徑小腊,可能不對救鲤。

# 樣例1
N = 5
M = 4
edge = [[0 for i in range(N)] for j in range(N)]

edge[0][2] = 1
edge[1][2] = 1
edge[2][3] = 1
edge[2][4] = 1



# 樣例2
# N = 4
# M = 0
# edge = [[0 for i in range(N)] for j in range(N)]

# 輸入
# line = input()
# N = int(line.split(' ')[0])
# M = int(line.split(' ')[1])
# for i in range(N):
#     line = input()
#     x = int(line.split(' ')[0]) - 1
#     y = int(line.split(' ')[1]) - 1
#     edge[x][y] = 1



print(edge)

visited = [0] * N
print("visited:", visited)

min_path_count = N

def dfs(path_count, node_index):
    global min_path_count
    global visited

    print("path_count=", path_count, "node_index=", node_index, "visited=", visited)

    if sum(visited) >= N:  # 如果所有的node都遍歷了。
        if path_count < min_path_count:
            min_path_count = path_count
        print('√')
        return

    if sum(edge[node_index]) == 0:  # 如果node_index沒有其他出邊
        for i in range(N):
            if visited[i] == 0: # 找到一個沒有遍歷的節(jié)點
                visited[i] += 1
                print('')
                dfs(path_count + 1, i)  # 開始新的路徑
                visited[i] -= 1

    else: # 如果node_index有其他出邊秩冈,那么繼續(xù)遍歷
        for i in range(N):
            if edge[node_index][i] == 1:
                visited[i] += 1 # 因為有的node可能被訪問多次本缠。
                dfs(path_count, i)  # 繼續(xù)當(dāng)前的路徑
                visited[i] -= 1 # 因為有的node可能被訪問多次。


for i in range(N):
    visited = [0] * N
    visited[i] = 1
    dfs(1, i)
    print("min_path_count=", min_path_count, '\n')
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末入问,一起剝皮案震驚了整個濱河市丹锹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌芬失,老刑警劉巖楣黍,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異棱烂,居然都是意外死亡租漂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進(jìn)店門垢啼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來窜锯,“玉大人,你說我怎么就攤上這事芭析∶” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵馁启,是天一觀的道長驾孔。 經(jīng)常有香客問我芍秆,道長,這世上最難降的妖魔是什么翠勉? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任妖啥,我火速辦了婚禮,結(jié)果婚禮上对碌,老公的妹妹穿的比我還像新娘荆虱。我一直安慰自己,他們只是感情好朽们,可當(dāng)我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布怀读。 她就那樣靜靜地躺著,像睡著了一般骑脱。 火紅的嫁衣襯著肌膚如雪菜枷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天叁丧,我揣著相機(jī)與錄音啤誊,去河邊找鬼。 笑死拥娄,一個胖子當(dāng)著我的面吹牛蚊锹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播条舔,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼枫耳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了孟抗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤钻心,失蹤者是張志新(化名)和其女友劉穎凄硼,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捷沸,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡摊沉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了痒给。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片说墨。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖苍柏,靈堂內(nèi)的尸體忽然破棺而出尼斧,到底是詐尸還是另有隱情,我是刑警寧澤试吁,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布棺棵,位于F島的核電站楼咳,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏烛恤。R本人自食惡果不足惜母怜,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望缚柏。 院中可真熱鬧苹熏,春花似錦、人聲如沸币喧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽粱锐。三九已至疙挺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間怜浅,已是汗流浹背铐然。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留恶座,地道東北人搀暑。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像跨琳,于是被迫代替她去往敵國和親自点。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 其實有時候,我們?yōu)樽约旱奶O果設(shè)備選擇一個配件是非常嚴(yán)肅的事情溅潜,就比如說如果你要為 Apple Watch 挑選一個...
    1e1b2fa8e5da閱讀 506評論 0 2
  • 在大多數(shù)情況下滚澜,軟件項目經(jīng)理就是促成團(tuán)隊發(fā)展的最佳人選粗仓。我覺得,項目經(jīng)理的工作目標(biāo)就是建立可持續(xù)發(fā)展的團(tuán)隊...
    Smart熊大閱讀 3,702評論 0 9
  • static這個關(guān)鍵字我們在C語言的學(xué)習(xí)中已經(jīng)遇到過了设捐。在C++中借浊,它又被賦予了一些新的功能。 1. static...
    天花板閱讀 3,021評論 5 24