首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >偏移的Java排列

偏移的Java排列
EN

Stack Overflow用户
提问于 2013-09-22 17:55:17
回答 1查看 150关注 0票数 1

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

The PhonePad

1 2 3

4 5 6

7 8 9

*0#

可能的行动

在国际象棋中,皇后可以做同样的动作(所以北,南,东,西,东北,西北,东南,西南.N-每个方向的空格)

起始号码:5

到目前为止,我已经实现了PhonePad作为一个二维字符数组,实现了女王可以在HashMap中进行的可能移动(使用x和y的偏移),并且我可以使用可能的移动之一使女王移动一个正方形。

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

我可以想象一开始

  • 5555555555,5555555551,5555555552…等等,直到0,
  • 5555555515,5555555155,5555551555。5155555555..数字2一直到0
  • 5555555151,5555551515,5555515155。5151555555..数字2一直到0 ..。等等,用于两位数的组合

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

谢谢!)

EN

回答 1

Stack Overflow用户

发布于 2013-09-22 18:22:09

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

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

当然,其他方法,以及对这一方法的改进也是可能的。"output“操作可以写入文件,添加到当前类或对象中的字段,或者添加到结果将返回的局部变量集合(列表或集)中。在最后一种情况下,(ndigits>1)逻辑必须组合来自多个递归调用的结果才能获得单个返回值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18946983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档