【发布时间】:2016-11-23 15:08:46
【问题描述】:
我开始开发一种具有以下规则的随机游戏算法:
游戏开始时,玩家从起始案例 S(Start) 开始。
他首先掷骰子,然后将上面指示的空格数向前推进。
骰子的可能值从 1 变为 6。
然后玩家执行当前情况下指示的动作(前进、后退、重新掷骰子(如果当前情况为 R:重新掷骰子)。
每个动作需要 1 回合。
当玩家到达终点 E(End) 时游戏获胜。玩家必须准确落到终点线上,不能超过。
开始和结束的情况 S 和 E 不一定在托盘的开头和结尾。
从棋盘出来的一回合输掉比赛。
这是一个例子:
| 4 | S | -2 | 1 | R | 4 | 3 | 4 | 3 | -5 | 2 | -4 | E |
玩家从 S 机箱开始。最快的获胜方式是:
掷骰子并掷出 3,到达 R 方格(转 1)。
重新掷骰子并掷出 6,到达第 2 格(第 2 回合)。
玩家必须前进 2 个箱子,到达箱子 E(第 3 回合)。
预期结果是 3,因为至少需要 3 次发射才能完成游戏。
我的解决方案基于一种算法,该算法从 End 案例开始并检查哪些案例驱动到 End 案例。然后,我会检查哪些案例可以到达我已经找到的案例。这样一来,我就不必检查不会导致最终案例的案例。
问题是,我更喜欢更重视代码的质量和有效性,因为我认为我找到的算法还不够。
有什么建议吗?
【问题讨论】:
标签: algorithm performance optimization complexity-theory