WilliamHoward 2014-08-20 13:59
浏览 201
已采纳

一个算法问题

完成一个方法,返回一种排列组合的所有字符串结果的数目。排列组合的规则如下:

1)排列组合的的字符串由a~z 26个小写字母组成;

2)方法入参为每个字符串长度;

3)每个字符串中的后一个字符的字母顺序要大于前一个字符; 例如:abc 合法;bac、aac 不合法;

这个问题没有头绪,递归好像不好实现,望大家答疑解惑!

  • 写回答

7条回答 默认 最新

  • h248980496 2014-08-20 16:30
    关注

    aac不行,说明不能重复
    1~26个不重复
    x=1,y=26
    x=2,y=25+24+...+1
    x=3,y=(24+23+...+1)+(23+22+...+1)+...(2+1)+1
    ...
    x=26,y=1
    两种思路,第一种不递归
    用一个list,然后用循环把所有可能的字符串
    例如x=4,则是aaaa,aaab,...baaa,baab,...zzzz全都枚举,并进行你上述的规则校验,校验通过就判断list中是否有了,没有就放进去,最后list的size就是结果。
    第二种,递归
    假设x=3,第一个字母有a~z(y和z经过校验不可以),然后取第二个字母,取第三个字母,每次取出字母都要符合你的规则,取完回到取第一个字母,依次,直到第一个字母取不出(假设字母是1~26,如果x=20,那么7也就是g是最后能取出的,h就取不出了)则递归结束,每取完一遍用计数器+1,递归完成时,计数器的数字就是结果。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 用C语言输入方程怎么
  • ¥15 网站显示不安全连接问题
  • ¥15 github训练的模型参数无法下载
  • ¥15 51单片机显示器问题
  • ¥20 关于#qt#的问题:Qt代码的移植问题
  • ¥50 求图像处理的matlab方案
  • ¥50 winform中使用edge的Kiosk模式
  • ¥15 关于#python#的问题:功能监听网页
  • ¥15 怎么让wx群机器人发送音乐
  • ¥15 fesafe材料库问题