本文准备讲解1个算法编程问题, 这个算法编程问题来自LeetCode平台。不了解.LeetCode平台的读者可以阅读笔者文章(在线编程平台推荐-LeetCode)。问题的英文版本描述如下:
dungeon game地牢游戏的解决算法这样考虑:K 只能向右移动或者向下移动,最后到达P位置。所以K需要向右移动或者向下移动的步数是确定的。以题目例子为目标,K需要到达P位置;需要向右移动2次和向下移动2次。将向右移动标为A,将向左移动标为B;所有可能的途径都可以计算得到。比如路径 AABB,就成为1条可能的路径。
如何得到2个A和2个B组成的所有可能路径呢?以下为得出所有路径的算法:
1 路径的起点为:AA
2 将1个B加入到 AA 中,可以得到的所有可能路径为:BAA ABA AAB
3再将1个B加入:
(BAA): BBAA BABA BAAB
(ABA) BABA ABBA ABAB
(AAB) BAAB ABAB AABB
将所有重复选项去除,就得到所有的路径:BBAA BABA BAAB ABBA ABAB AABB
这是1种变化的求出所有排列可能的算法,对应某些状况非常有效。
算法的框架如下:
算法的框架算法的核心函数如下:
核心的函数以上算法未发现有什么错误,但在 LeetCode 平台上对应少量测试用例运转会超时。标准的题目解法用到特殊的数学处理方案;该数学处理方案可能只对该题会比较有效。标准题目算法如下:
标准的算法
网友评论