猿问

飞镖结帐代码java

我对 Java 和一般编程很陌生。我正在尝试为 501 游戏制作一个基本的飞镖得分应用程序。我已经设置了大部分,但我想让应用程序告诉您可能的完成情况,


即在 501 中,您必须以双头或中心公牛完成),因此对于 170,您可以使用 T20 T20 公牛完成。我一直在网上查看并看到了一些关于递归方法的建议,但这似乎超出了我目前的知识范围,我已经观看了一些 youtube 视频并了解了有关调用自身的方法的基本思想,直到达到某个标准,但是我真的不明白这在这种情况下会有什么帮助。目前我已经硬编码了所有可能的出局 2,3,4.......170,并结合了将 = 出局的分数,如下所示,


 if (scoreTeamA == 150) {


        teamACheckout.setText("T20, T18, D18");


    }

这是一大堆代码,我相信有更好的方法,事实上,很可能有更好的方法来完成我迄今为止所做的大部分工作,但这是一个很好的学习曲线。以这种方式编写代码会比另一种方式更加占用资源吗?


顺便说一句,我正在使用 android studio


守候你守候我
浏览 212回答 2
2回答

慕姐8265434

我不熟悉游戏,但我会尝试解释我将如何解决这个问题。您想要做的是在有限空间中搜索所有可用的解决方案。您可以将游戏的所有可能状态视为一个图形。假设您从 10 个点开始,并且您有 4 种可能的结果(1、2、3、0),您的图表将是:       10 1/ 2|  3| 0\ /   |   |   \9   8    7   10现在 10 是我们的根节点,我们有 4 个选项。得 1 分到 9 或得 2 分到 8 等。9、8、7、10是根(10)的子节点,1、2、3、0是我们可以走的路径。现在我们可以继续扩展图形。展开 9                    10            1/      2|  3| 0\            /        |   |   \           9         8    7   10      1/ 2| 3| 0\      /   |  |   \     8    7  6    9您可以看到我们有 4 条新路径,可以让我们到达 4 个新节点。所以假设我们在我们的根节点 (10) 中,我们想要去 7 我们必须找到所有可用的路径。在这种情况下,我们有 2:a) 得分 3 直接进入 7 b) 得分 1 进入 9 然后得分 2 进入 7我们可以扩展图,直到到达具有 0 的节点,我们将其称为叶节点。现在从我们的根节点到叶节点的所有路径都是一个可能的解决方案。但要小心,因为我们有 0(未命中)作为选项,我们将达到一个永无止境的循环,例如我们得到 10 分,我们错过了(0 条路径),我们去同一个节点(10)然后我们再次错过,依此类推。一般来说,你应该看看图论,因为它在解决很多问题时真的很有用。至于如何找到所有路径,看 DFS 和 BFS 算法(也可以用递归实现)。当然没有一个答案,但我希望我给了你一个好的起点
随时随地看视频慕课网APP

相关分类

Java
我要回答