免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: bleem1998
打印 上一主题 下一主题

抛砖引玉,算法求解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-18 11:11 |显示全部楼层 |倒序浏览
把一个字符串中所有字符的所有可能的组合打印出来(字符串中没有重复的字符)
不考虑字符顺序('123'和'312'是一样的)
我勉强写了一个
超级慢
大伙有好的算法吗

  1. #!/usr/bin/env python

  2. def split_str(mystr):
  3.         s_len=len(mystr)
  4.         if s_len <= 0:
  5.                 return []
  6.         l_ret=[]
  7.         s_list=list(mystr)
  8.         while s_len > 0:
  9.                 s_len=s_len-1
  10.                 pp=s_list[:s_len]+s_list[s_len+1:]
  11.                 if len(pp):
  12.                         l_ret.append(''.join(pp))
  13.         return l_ret

  14. def split_list(mylist):
  15.         l_len=len(mylist)
  16.         if l_len <= 0:
  17.                 return []
  18.         while l_len > 0:
  19.                 l_len=l_len-1
  20.                 zz=split_str(mylist[l_len])
  21.                 zz_len=len(zz)
  22.                 while zz_len > 0:
  23.                         zz_len=zz_len-1
  24.                         yy=split_list([zz[zz_len]])
  25.                         if len(yy):
  26.                                 zz=zz+yy
  27.                 if len(zz):
  28.                         for i in zz:
  29.                                 if i not in mylist:
  30.                                         mylist.append(i)
  31.         return mylist

  32. if __name__ == '__main__':
  33.         print split_list(['12345'])
复制代码

  1. sam-linux:/tmp# ./bb.py
  2. ['12345', '1234', '1235', '1245', '1345', '2345', '234', '235', '245', '345', '34', '35', '45', '4', '5', '3', '24', '25', '2', '23', '134', '135', '145', '14', '15', '1', '13', '124', '125', '12', '123']

复制代码

[ 本帖最后由 bleem1998 于 2006-5-18 11:19 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-05-19 00:17 |显示全部楼层
太厉害了。。。

论坛徽章:
0
3 [报告]
发表于 2006-06-05 13:55 |显示全部楼层
无敌了
竟然看不懂!!
解释一下这个递归吧
谢谢

论坛徽章:
0
4 [报告]
发表于 2006-06-06 17:19 |显示全部楼层
理解了一些
还不是很深刻
谢谢解答
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP