7-2 地下迷宫探索 (30 分)(C语言实现)
7-2 地下迷宮探索 (30 分)
地道戰(zhàn)是在抗日戰(zhàn)爭(zhēng)時(shí)期,在華北平原上抗日軍民利用地道打擊日本侵略者的作戰(zhàn)方式。地道網(wǎng)是房連房、街連街、村連村的地下工事,如下圖所示。
我們?cè)诨仡櫱拜厒兤D苦卓絕的戰(zhàn)爭(zhēng)生活的同時(shí),真心欽佩他們的聰明才智。在現(xiàn)在和平發(fā)展的年代,對(duì)多數(shù)人來(lái)說(shuō),探索地下通道或許只是一種娛樂(lè)或者益智的游戲。本實(shí)驗(yàn)案例以探索地下通道迷宮作為內(nèi)容。
假設(shè)有一個(gè)地下通道迷宮,它的通道都是直的,而通道所有交叉點(diǎn)(包括通道的端點(diǎn))上都有一盞燈和一個(gè)開(kāi)關(guān)。請(qǐng)問(wèn)你如何從某個(gè)起點(diǎn)開(kāi)始在迷宮中點(diǎn)亮所有的燈并回到起點(diǎn)?
輸入格式:
輸入第一行給出三個(gè)正整數(shù),分別表示地下迷宮的節(jié)點(diǎn)數(shù)N(1<N≤1000,表示通道所有交叉點(diǎn)和端點(diǎn))、邊數(shù)M(≤3000,表示通道數(shù))和探索起始節(jié)點(diǎn)編號(hào)S(節(jié)點(diǎn)從1到N編號(hào))。隨后的M行對(duì)應(yīng)M條邊(通道),每行給出一對(duì)正整數(shù),分別是該條邊直接連通的兩個(gè)節(jié)點(diǎn)的編號(hào)。
輸出格式:
若可以點(diǎn)亮所有節(jié)點(diǎn)的燈,則輸出從S開(kāi)始并以S結(jié)束的包含所有節(jié)點(diǎn)的序列,序列中相鄰的節(jié)點(diǎn)一定有邊(通道);否則雖然不能點(diǎn)亮所有節(jié)點(diǎn)的燈,但還是輸出點(diǎn)亮部分燈的節(jié)點(diǎn)序列,最后輸出0,此時(shí)表示迷宮不是連通圖。
由于深度優(yōu)先遍歷的節(jié)點(diǎn)序列是不唯一的,為了使得輸出具有唯一的結(jié)果,我們約定以節(jié)點(diǎn)小編號(hào)優(yōu)先的次序訪問(wèn)(點(diǎn)燈)。在點(diǎn)亮所有可以點(diǎn)亮的燈后,以原路返回的方式回到起點(diǎn)。
輸入樣例1:
6 8 1
1 2
2 3
3 4
4 5
5 6
6 4
3 6
1 5
輸出樣例1:
1 2 3 4 5 6 5 4 3 2 1
輸入樣例2:
6 6 6
1 2
1 3
2 3
5 4
6 5
6 4
輸出樣例2:
6 4 5 4 6 0
這道題只有4個(gè)測(cè)試樣例:所以他漏了一個(gè)很重要的樣例。
原路返回的樣例沒(méi)有。
我測(cè)試了一個(gè)
測(cè)試樣例:
答案:
1 2 3 4 3 2 5 2 1說(shuō)明我的代碼是有問(wèn)題的,但是我這道題過(guò)了,而且我在網(wǎng)上看了看,基本大家都沒(méi)有考慮這個(gè)問(wèn)題。
所以我后來(lái)和別人討論了一下,覺(jué)得是我和出題人對(duì)原路返回有歧義。
他的原路返回是可以中途出去的(也就是一開(kāi)始沒(méi)去過(guò)的去一下再回來(lái))。
總結(jié)
以上是生活随笔為你收集整理的7-2 地下迷宫探索 (30 分)(C语言实现)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql 全文索引
- 下一篇: Thread线程类及多线程