2014“華為杯”蘇、魯高校大學(xué)生程序設(shè)計(jì)大賽選拔賽暨東南大學(xué)第十屆程序設(shè)計(jì)競(jìng)賽復(fù)賽【逃出密室】

題目描述:

超哥來(lái)到一間密室,忽然一陣陰風(fēng)把門(mén)關(guān)上了。魔法學(xué)校的門(mén)需要魔力才能打開(kāi),而超哥沒(méi)有那間密室的魔力。超哥繼續(xù)往密室深處走,發(fā)現(xiàn)一堆魔法瓶和一些古老的文字。上面寫(xiě)著:欲開(kāi)啟密室,需收集所有瓶中魔力。開(kāi)啟魔法瓶需嚴(yán)格按照順序,否則將焚毀密室…文字記載了一個(gè)N×N的0,1矩陣GN×N,還記錄了任意兩個(gè)魔法瓶之間的開(kāi)啟規(guī)則:你可以從任意一個(gè)魔法瓶開(kāi)始。魔法瓶j能在緊隨魔法瓶i之后被安全打開(kāi),當(dāng)且僅當(dāng)Gi,j=1。魔法瓶j緊隨魔法瓶i之后被打開(kāi),密室會(huì)被焚毀,當(dāng)且僅當(dāng)Gi,j=0。文字最后寫(xiě)道,任意兩個(gè)魔法瓶,都可以相鄰。即:Gi,j⊕Gj,i=1(?i≠j)你能幫超哥找到一個(gè)開(kāi)啟所有魔法瓶方案嗎?

輸入:

第一行一個(gè)整數(shù)N,魔法瓶的個(gè)數(shù),接著N行,每行N個(gè)數(shù),0或1。第i行第j列為1,表示開(kāi)啟第i個(gè)魔法瓶后,下一個(gè)開(kāi)啟的魔法瓶可以是j。保證矩陣 第i行第j列與 第j行第i列數(shù)值不同,第i行i列為0。N≤1000

輸出:

N個(gè)數(shù),空格隔開(kāi),表示打開(kāi)魔法瓶編號(hào)順序。

樣例輸入:

2

0 0

1 0

樣例輸出:

2 1

問(wèn)題分析:

該題的本質(zhì)即:

在一“特殊”有向圖中尋找一條不重復(fù)經(jīng)過(guò)某個(gè)點(diǎn)的可行路徑遍歷圖中所有點(diǎn)。

而這個(gè)圖究竟有多特殊呢?

該圖的特殊性描述如下:

1、該圖中任意兩點(diǎn)之間存在一條路徑;

2、該路徑為單向不可逆,即若存在A->B,則不存在B->A,反之亦然

由以上兩條特殊性可推出如下結(jié)論:

若存在一條路徑經(jīng)過(guò)圖中若干個(gè)點(diǎn),例:2->1->3->4

則必存在圖中任意不在該路徑中的點(diǎn)可插入該路徑中使路徑連通:

假設(shè)該數(shù)組為arr,圖中任意不在該路徑中的點(diǎn)為5,則遍歷arr[5][2],arr[5][1],

arr[5][3],arr[5][4],若存在arr[5][num] = 1;則插入該數(shù)前,若不存在為1的值則插入路徑尾部,因?yàn)槿鬭rr[5][4] = 0;由特殊性2可知arr[4][5] = 1;即點(diǎn)4可到達(dá)點(diǎn)5。


java實(shí)現(xiàn)如下:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容