我正在研究一種Android應用程序,需要根據一輪高爾夫中的分數來確定當前的T恤訂單。對於那些不知道的球員來說,發球順序(或榮譽)是球員從發球位置擊球的順序,根據誰是前一洞(當前洞1)的得分最高(最低)的球員。如果有關係,那麼我需要看看當前的洞2 ......等等。直到我找到了訂單,或者檢查了所有分數,我將使用他們開始的訂單。一旦我找出了一個玩家的訂單,我會停止檢查該玩家的分數。問題在於玩家可以從任何洞開始。也可以有任何數量的孔。因此,如果他們從洞3開始,那麼他們將在洞2上結束。因此他們將進入洞18(假設18洞球場),然後環繞並從洞1開始。如果您需要更好的解釋,請告訴我我會嘗試。確定高爾夫球T恤訂單功能Java
Example data:
Holes: 9
Starting hole: 3
Player 1: 0,0,5,4,5,6,3,2,5
Player 2: 0,0,4,2,5,3,3,6,3
Player 3: 0,0,4,3,7,3,2,2,5
Assume the starting order is: Player 1, Player 2, Player 3
Example Output of the order after calculation:
Player 2, Player 3, Player 1
我攻擊了這個問題想這將是很容易的,但它正在變成比我想象的更難。我已經通過循環遍歷每個玩家開始迭代路線,然後遍歷每個玩家的第一個洞,他們都有一個分數......等等,但我發現我有很多for循環,它只是隨着大量的if語句變得醜陋。我將嘗試一個遞歸解決方案,但我想看看有沒有人有任何想法,而我會稍微休息一下。如果有人想看我的代碼,我目前正在使用PHP進行測試,因爲我的開發服務器上沒有Java,因此代碼將使用PHP。但是,它很容易移植到Java。感謝您的幫助!
編輯:我還應該注意到,我會隨時想知道這些信息,無論他們是否已完成這一輪。所以如果他們從洞3開始並且只打了2洞,那麼我需要考慮未打洞的洞。如果這種情況已不明顯...
如果他們從洞3開始,他們爲什麼會在洞1上結束?他們不會在第二洞結束嗎? – brimborium
@brimborium哎呀,謝謝!固定。 –