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 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败