java - 請(qǐng)問(wèn)這種排列算法的難度在什么水平?
問(wèn)題描述
https://segmentfault.com/q/10... 這個(gè)問(wèn)題中有四種對(duì)4位整型數(shù)組進(jìn)行排列組合的算法,一個(gè)一個(gè)按照運(yùn)行順序?qū)懴聛?lái)覺(jué)得很有意思,我肯定直接寫不出來(lái),想問(wèn)一下算法界的大神們,這種算法大概是什么水平的?如果是很簡(jiǎn)單的那種,我大概真的要去補(bǔ)一下了...另外,除了死記硬背,這么刁鉆的設(shè)計(jì)是怎么想出來(lái)的...
問(wèn)題解答
回答1:全排列的過(guò)程可以當(dāng)成樹(shù)的遍歷過(guò)程,每個(gè)葉子節(jié)點(diǎn)就是一種排列,只不過(guò)要注意的是每個(gè)子樹(shù)的邊不能和父節(jié)點(diǎn)的邊重復(fù)。 樹(shù)的遍歷過(guò)程好辦,或遞歸或用棧或隊(duì)列甚至另外設(shè)置個(gè)保存狀態(tài)的數(shù)組都行,子樹(shù)的邊不能和父節(jié)點(diǎn)邊重復(fù)的問(wèn)題也好辦,遍歷子樹(shù)的時(shí)候只遍歷available的,并且遍歷后做標(biāo)記就可以了。 我覺(jué)得這個(gè)問(wèn)題轉(zhuǎn)換成樹(shù)就好辦了,實(shí)現(xiàn)各種各樣都可以吧。
相關(guān)文章:
1. mac OSX10.12.4 (16E195)下Mysql 5.7.18找不到配置文件my.cnf2. mysql - 怎么生成這個(gè)sql表?3. mysql儲(chǔ)存json錯(cuò)誤4. php - 公眾號(hào)文章底部的小程序二維碼如何統(tǒng)計(jì)?5. mysql - 表名稱前綴到底有啥用?6. mysql - 數(shù)據(jù)庫(kù)表中,兩個(gè)表互為外鍵參考如何解決7. Navicat for mysql 中以json格式儲(chǔ)存的數(shù)據(jù)存在大量反斜杠,如何去除?8. 在mybatis使用mysql的ON DUPLICATE KEY UPDATE語(yǔ)法實(shí)現(xiàn)存在即更新應(yīng)該使用哪個(gè)標(biāo)簽?9. mysql - 數(shù)據(jù)庫(kù)建字段,默認(rèn)值空和empty string有什么區(qū)別 11010. sql語(yǔ)句 - 如何在mysql中批量添加用戶?
