Advent of Code Day 7 遞歸馬戲團

解題語言不限Java

題目內(nèi)容

Wandering further through the circuits of the computer, you come upon a tower of programs that have gotten themselves into a bit of trouble. A recursive algorithm has gotten out of hand, and now they're balanced precariously in a large tower.

沿著電路板向前走遠,你來到了一個出來問題的程序塔孤澎。一個遞歸程序出錯峦失,現(xiàn)在他們需要平衡整個程序塔。

One program at the bottom supports the entire tower. It's holding a large disc, and on the disc are balanced several more sub-towers. At the bottom of these sub-towers, standing on the bottom disc, are other programs, each holding their own disc, and so on. At the very tops of these sub-sub-sub-...-towers, many programs stand simply keeping the disc below them balanced but with no disc of their own.

一個程序在底部支撐整個塔杜跷,它會保持一個大盤,在這個大盤上會有幾個小塔。其他的程序立在這個大盤中小塔的底部溢谤,保持著一個盤子斩松,如此如此伶唯。在這些分塔的分塔的分塔……的最頂上,很多程序立在盤上惧盹,保持底下的盤子平衡乳幸。

You offer to help, but first you need to understand the structure of these towers. You ask each program to yell out their name, their weight, and (if they're holding a disc) the names of the programs immediately above them balancing on that disc. You write this information down (your puzzle input). Unfortunately, in their panic, they don't do this in an orderly fashion; by the time you're done, you're not sure which program gave which information.

你答應(yīng)去幫忙,但是最開始你要知道這些塔的結(jié)構(gòu)钧椰。你讓每個程序喊出他們的名字粹断,質(zhì)量,和他們支持的盤子上的程序嫡霞。不幸的是瓶埋,他們沒有按照順序回答,當你完成之后诊沪,你不知道是哪個程序給出的信息养筒。

For example, if your list is the following:

比如,你列出了這些:

pbga (66)
xhth (57)
ebii (61)  
havc (66)
ktlj (57)
fwft (72) -> ktlj, cntj, xhth
qoyq (66)
padx (45) -> pbga, havc, qoyq
tknk (41) -> ugml, padx, fwft
jptl (61)
ugml (68) -> gyxo, ebii, jptl
gyxo (61)
cntj (57)

...then you would be able to recreate the structure of the towers that looks like this:
然后你可以整理出這個塔的結(jié)構(gòu):

                gyxo
              /     
         ugml - ebii
       /      \     
      |         jptl
      |        
      |         pbga
     /        /
tknk - - - padx - havc
     \        \
      |         qoyq
      |             
      |         ktlj
       \      /     
         fwft - cntj
              \     
                xhth

In this example, tknk is at the bottom of the tower (the bottom program), and is holding up ugml, padx, and fwft. Those programs are, in turn, holding up other programs; in this example, none of those programs are holding up any other programs, and are all the tops of their own towers. (The actual tower balancing in front of you is much larger.)
在這個例子里娄徊,tknk是在最下面的程序闽颇,同時它支持著ugml, padx, 和fwft。這些程序寄锐,反過來支持著其他的程序兵多。在最上面的程序,沒有支持著任何程序橄仆。(其實你會拿到更大的塔)
Before you're ready to help them, you need to make sure your information is correct. What is the name of the bottom program?
在你幫助他們之前剩膘,你需要去確定你的信息是正確的,那么在整個塔的最底部的程序叫什么盆顾?

解題思路

其實用搜索就可以很快找到……

首先怠褐,分析過例子可以知道,輸入有兩種您宪,節(jié)點(node)和終點(End)奈懒。我制作了一個遞歸程序來搜索所有節(jié)點的子節(jié)點奠涌,并且計算節(jié)點和。節(jié)點和是將所有終點設(shè)為1磷杏,每個節(jié)點等于子節(jié)點值的和溜畅。在上圖的例子里tknk 值為九個終點的和,所以值為9极祸。跑完之后找最大值慈格,就是根節(jié)點。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末遥金,一起剝皮案震驚了整個濱河市浴捆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌稿械,老刑警劉巖选泻,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異美莫,居然都是意外死亡滔金,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進店門茂嗓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人科阎,你說我怎么就攤上這事述吸。” “怎么了锣笨?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵蝌矛,是天一觀的道長。 經(jīng)常有香客問我错英,道長入撒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任椭岩,我火速辦了婚禮茅逮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘判哥。我一直安慰自己献雅,他們只是感情好,可當我...
    茶點故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布塌计。 她就那樣靜靜地躺著挺身,像睡著了一般。 火紅的嫁衣襯著肌膚如雪锌仅。 梳的紋絲不亂的頭發(fā)上章钾,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天墙贱,我揣著相機與錄音,去河邊找鬼贱傀。 笑死惨撇,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的窍箍。 我是一名探鬼主播串纺,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼椰棘!你這毒婦竟也來了纺棺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤邪狞,失蹤者是張志新(化名)和其女友劉穎祷蝌,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體帆卓,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡巨朦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了剑令。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片糊啡。...
    茶點故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖吁津,靈堂內(nèi)的尸體忽然破棺而出棚蓄,到底是詐尸還是另有隱情,我是刑警寧澤碍脏,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布梭依,位于F島的核電站,受9級特大地震影響典尾,放射性物質(zhì)發(fā)生泄漏役拴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一钾埂、第九天 我趴在偏房一處隱蔽的房頂上張望河闰。 院中可真熱鬧,春花似錦褥紫、人聲如沸淤击。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽污抬。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間印机,已是汗流浹背矢腻。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留射赛,地道東北人多柑。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像楣责,于是被迫代替她去往敵國和親竣灌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,455評論 2 359