有一个关于在PhonePad上生成一个10位电话号码列表的问题,给出了一组可能的移动和一个起始号码。
The PhonePad
1 2 3
4 5 6
7 8 9
*0#
可能的行动
在国际象棋中,皇后可以做同样的动作(所以北,南,东,西,东北,西北,东南,西南.N-每个方向的空格)
起始号码:5
到目前为止,我已经实现了PhonePad作为一个二维字符数组,实现了女王可以在HashMap中进行的可能移动(使用x和y的偏移),并且我可以使用可能的移动之一使女王移动一个正方形。
我的下一步是找出一种算法,利用我的HasMap中可能的移动,给出所有10位数的排列(电话号码)。允许重复一个数字。*和#在返回的电话号码列表中是不允许的。
我可以想象一开始
有任何关于产生10位数字组合的系统方法的建议吗?即使是伪码算法也是值得赞赏的!如果需要进一步澄清,请告诉我。
谢谢!)
发布于 2013-09-22 18:22:09
更详细地说,最简单的方法是递归方法,大致如下:
当然,其他方法,以及对这一方法的改进也是可能的。"output“操作可以写入文件,添加到当前类或对象中的字段,或者添加到结果将返回的局部变量集合(列表或集)中。在最后一种情况下,(ndigits>1)逻辑必须组合来自多个递归调用的结果才能获得单个返回值。
https://stackoverflow.com/questions/18946983
复制相似问题