簡體   English   中英

使用遞歸查找數組中元素的所有組合

[英]Finding all combinations of elements in an array using recursion

我知道有很多與此問題類似的問題,並且在過去的一個小時中我已經對其進行了審查,但是我無法弄清楚如何使用提供的答案來解決我的問題。

我的任務如下:

編寫一個程序,提示用戶輸入城市列表,其中每個城市都有一個名稱以及x和y坐標。 輸入所有城市之后,程序應使用遞歸算法打印所有可能的路線的長度,這些路線從輸入的第一個城市開始,在輸入的最后一個城市結束,並訪問列表中的每個城市。 對於每條路線,程序均應打印出所訪問的每個城市的名稱,然后顯示路線的長度。

我解決了這個問題,可以找出大部分代碼。 讓我陷入困境的是找到第一座和最后一座城市之間的所有可能組合。 我該怎么辦呢? 我正在嘗試使用5個整數組成的簡單數組來解決該問題,我一生都無法弄清楚如何打印所有組合。

您能幫助我解決這個可怕的問題嗎?

謝謝。

建議您不要使用數組,而不要使用數組。

您可以在此處閱讀有關旅行商問題的更多信息TSPTSP的 蠻力

您是否被迫使用遞歸算法?

如果沒有,這是我的建議:

假設輸入的城市是A,C1,...,Cn,B,其中A和B是第一個和最后一個城市。 第一個和最后一個城市無法更改,因此您應該計算n個城市的所有組合。 要計算所有組合,您可以從0到2 ^ n-1進行計數。 對於計數器的每個值,您具有從A到B的路徑。每個計數器值的每一位都可能與一個城市(Ci)相關。 現在,對於計數器的每個值,您可以打印從A到B的路徑(帶有一些Ci):

  • 如果某個城市的相關位的計數器值為0,則該相關城市不是路徑中的已查看城市
  • 如果城市的相關位的計數器值為1,則相關城市是路徑中的已查看城市。

這是一種眾所周知的圖形方法。 如果您有關於圖的知識,那么(遞歸地)看一下DFS很有可能滿足您的期望。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM