输入一个字符串,要求输出字符串的所以可能排序。比如输入为:abc,那么输出有以下几种可能:abc,acb,bac
3个回答
展开全部
‘给你个易语言M选N的算法
.版本 2
.程序集 窗口程序集1
.程序集变量 M, 整数型
.程序集变量 N, 整数型
.程序集变量 索引组, 字节型, , "0", 当完成一种组合时,以该数组各成员的值为索引,分别从“欲组合的数组”中取出对应索引的成员后合并起来,则得到组合的结果
.程序集变量 计数器, 整数型
.程序集变量 欲组合的数组, 文本型, , "0"
.子程序 _按钮1_被单击
欲组合的数组 = { “A”, “B”, “C”, “D”, “E”, “F” }
计数器 = 0
M选N (取数组成员数 (欲组合的数组), 3)
.子程序 M选N, , , 凌晨孤星
.参数 参数_M, 整数型
.参数 参数_N, 整数型
M = 参数_M
N = 参数_N
重定义数组 (索引组, 假, N) ' 索引组的数组成员数必须与N相等
递归 (N, 0) ' 此递归最大嵌套层次为N,因此完全不用担心栈空间不足。但递归意味着函数反复调用,开销较大。
.子程序 递归, , , 凌晨孤星
.参数 嵌套层次, 整数型
.参数 当前起始索引, 整数型
.局部变量 i, 整数型
.局部变量 j, 整数型
.局部变量 临时文本, 文本型
嵌套层次 = 嵌套层次 - 1
.变量循环首 (当前起始索引, M - 1, 1, i)
索引组 [嵌套层次 + 1] = i + 1 ' 记录本次组合的第 [嵌套层次] 个元素对应的索引值
.如果 (嵌套层次 = 0) ' 当 [嵌套层次] 为 0 是,表示已完成一种组合
计数器 = 计数器 + 1
临时文本 = “”
.计次循环首 (N, j) ' 从索引组中取出该组合各元素 取出组合结果到临时文本
临时文本 = 欲组合的数组 [索引组 [j]] + 临时文本
.计次循环尾 ()
输出调试文本 (“第 ” + 到文本 (计数器) + “ 种组合: ” + 临时文本) ' 输出组合结果!!!!!!!!!
.否则
递归 (嵌套层次, i + 1)
.如果结束
.变量循环尾 ()
.版本 2
.程序集 窗口程序集1
.程序集变量 M, 整数型
.程序集变量 N, 整数型
.程序集变量 索引组, 字节型, , "0", 当完成一种组合时,以该数组各成员的值为索引,分别从“欲组合的数组”中取出对应索引的成员后合并起来,则得到组合的结果
.程序集变量 计数器, 整数型
.程序集变量 欲组合的数组, 文本型, , "0"
.子程序 _按钮1_被单击
欲组合的数组 = { “A”, “B”, “C”, “D”, “E”, “F” }
计数器 = 0
M选N (取数组成员数 (欲组合的数组), 3)
.子程序 M选N, , , 凌晨孤星
.参数 参数_M, 整数型
.参数 参数_N, 整数型
M = 参数_M
N = 参数_N
重定义数组 (索引组, 假, N) ' 索引组的数组成员数必须与N相等
递归 (N, 0) ' 此递归最大嵌套层次为N,因此完全不用担心栈空间不足。但递归意味着函数反复调用,开销较大。
.子程序 递归, , , 凌晨孤星
.参数 嵌套层次, 整数型
.参数 当前起始索引, 整数型
.局部变量 i, 整数型
.局部变量 j, 整数型
.局部变量 临时文本, 文本型
嵌套层次 = 嵌套层次 - 1
.变量循环首 (当前起始索引, M - 1, 1, i)
索引组 [嵌套层次 + 1] = i + 1 ' 记录本次组合的第 [嵌套层次] 个元素对应的索引值
.如果 (嵌套层次 = 0) ' 当 [嵌套层次] 为 0 是,表示已完成一种组合
计数器 = 计数器 + 1
临时文本 = “”
.计次循环首 (N, j) ' 从索引组中取出该组合各元素 取出组合结果到临时文本
临时文本 = 欲组合的数组 [索引组 [j]] + 临时文本
.计次循环尾 ()
输出调试文本 (“第 ” + 到文本 (计数器) + “ 种组合: ” + 临时文本) ' 输出组合结果!!!!!!!!!
.否则
递归 (嵌套层次, i + 1)
.如果结束
.变量循环尾 ()
追问
有程序代码吗?这看的好费力啊
展开全部
这个还是比较简单的 重点是你要每次记录字符串的长度,再利用循环就可以了,就好像以下推荐的易语言写法一样。
首先 好比你说的abc 长度为3
第二部 循环输出 开始从a开始 即abc
第三部 循环从第二个字符开始 即b 输出bca
第四部 循环从第三个字符开始 即c 输出cba
整个程序写的好的话只需要双循环即可实现
首先 好比你说的abc 长度为3
第二部 循环输出 开始从a开始 即abc
第三部 循环从第二个字符开始 即b 输出bca
第四部 循环从第三个字符开始 即c 输出cba
整个程序写的好的话只需要双循环即可实现
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
多层循环加判断可以实现
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询