gpt4 book ai didi

偏移量的 Java 排列

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:24:55 26 4
gpt4 key购买 nike

有一个关于在 PhonePad 上生成 10 位电话号码列表的问题,给定一组可能的移动和一个起始号码。

PhonePad:
1 2 3
4 5 6
7 8 9
* 0 #

可能的 Action :
国际象棋中女王可以走的步数相同(所以北、南、东、西、东北、西北、东南、西南……每个方向 n 个空格)

起始编号:5

到目前为止,我已经将 PhonePad 实现为二维字符数组,在 HashMap 中实现了 Queen 可以进行的可能移动(使用 x 和 y 的偏移量),并且我可以使用以下方法之一让 Queen 移动一个方格可能的 Action 。

我的下一步是找出一种算法,使用我的 HasMap 中的可能移动,给我所有 10 位数字的排列(电话号码)。允许重复编号。 * 和 # 不允许出现在返回的电话号码列表中。

我会想象从
开始 - 5555555555, 5555555551, 5555555552...等等直到0,
- 5555555515、5555555155、5555551555.. 5155555555.. 以及数字 2 到 0
- 5555555151、5555551515、5555515155.. 5151555555.. 以及数字 2 到 0
... 以此类推两位数组合

关于生成 10 位数字组合的系统方法有什么建议吗?即使是伪代码算法也值得赞赏!如果需要进一步说明,请告诉我。

提前致谢! :)

最佳答案

更详细地说,最简单的方法是递归方法,大致如下:

  • 它接受一个最初为空的前缀字符串、一个当前数字(最初为“5”)和要生成的数字数量(最初为 10)。
  • 如果位数为 1,它将简单地输出与当前数字连接的前缀。
  • 如果数字的个数大于 1,那么它将列出所有可能的下一个数字,并以(前缀+(当前数字),下一个数字,(数字的数字)-1)作为递归调用自己论点。

当然,其他方法和对此方法的改进也是可能的。 “输出”操作可以是写入文件、添加到当前类或对象中的字段,或者添加到将作为结果返回的局部变量集合(List 或 Set)。在后一种情况下,(ndigits>1) 逻辑必须组合多个递归调用的结果以获得单个返回值。

关于偏移量的 Java 排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18946983/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com