算法题/用递归实现一个字符串的全排列

来源:互联网 发布:淘宝天下视频营销 编辑:程序博客网 时间:2024/06/05 03:15

python2.7

算法思路:
n个元素的全排列=(n-1个元素的全排列)+(另一个元素作为前缀);
出口:如果只有一个元素的全排列,则说明已经排完,则输出数组;
不断将每个元素放作第一个元素,然后将这个元素作为前缀,并将其余元素继续全排列;

"""f(a,b,c,d,......n) = a+f(b,c,d......n) & b+f(a,c,d......n) & c+f(a,b,d......n)...... n+f(a,b,c,d......n-1)"""
#coding:utf-8def string_to_array(s):    if len(s) ==0:        return []    else:        return arrangement(list(s))def arrangement(array_s):    if len(array_s) == 0:        return [[]] #如果要排列的列表为空,返回一个空列表    else:        result = []        for i in array_s:            #获得子集变量,将所有元素赋值给temp            temp = array_s[:]            temp.remove(i)            for j in arrangement(temp):                result.append([i]+j)        return resultprint(string_to_array('abc'))

这里写图片描述

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 网络连接不可用怎么办 苹果手机空间不足怎么办 苹果空间已满怎么办 淘宝店评分低怎么办 退税商品拆封了怎么办 退款申请关闭了怎么办 公众号图片侵权怎么办 qq没法发语音怎么办 139邮箱换号怎么办 qq号显示手机号怎么办 运动鞋大了怎么办妙招 鞋买小了挤脚怎么办 鞋子买太大了怎么办 买了nike betrue怎么办 手表蹭花了怎么办 迅雷登录太频繁怎么办 糖果手机声音小怎么办 产品出现了问题怎么办 插头螺丝太紧怎么办 宜家儿童乐园怎么办卡 泰国旅游有蚊子怎么办 啦泰国旅游拉肚子怎么办 电动车上不了牌怎么办 电动车电压低了怎么办 电车显示器不亮怎么办 电动车故障显示m怎么办 电动车上面出现m怎么办 佰仟乐购额度没有了怎么办 交易密码忘记了怎么办? 电脑打开没网怎么办 网络配适器无法运行怎么办 电脑dns没有响应怎么办 win7系统没有网上邻居怎么办 win10网络重置了怎么办 win7桌面没有网上邻居怎么办 win7电脑没有网上邻居怎么办 无线网连接受限怎么办 win7账户被锁定怎么办 贷款sdk授权失败怎么办 京东保价发票怎么办 淘宝购物出现质量问题怎么办