我正在开发一个 Android 应用程序,该应用程序需要根据一轮高尔夫的分数来确定当前的发球台顺序。对于那些不知道的人,发球顺序(或荣誉)是根据上一洞(当前第 1 洞)得分最高(最低)的球员从发球台击球的顺序。如果有平局,那么我需要查看当前的hole-2 ...等。直到我弄清楚了顺序,或者检查了所有分数,此时我会使用他们开始的顺序。一旦我确定了一个球员的顺序,我就会停止检查那个球员的分数。问题是球员可以从任何洞开始。也可以有任意数量的孔。因此,如果他们从第 3 洞开始,那么他们将在第 2 洞结束。所以他们将到达第 18 洞(假设球场是 18 洞),然后绕道并从第 1 洞开始。
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 个洞,那么我需要考虑未打过的洞。如果这还不是很明显...