对于字符串的所有字符组合,我设计了如下算法:
eg."abc"
abc
ab, ac, bc
a, b, c
可见下层是上层每个结果去除一个字符,经过去重得到的结果。
那么程序可以这样写
递归函数名 (字符串){
__保存字符串;
__for 循环对字符串遍历{
____函数:删除该字符串中的某位置字符,返回新字符串____//此处被运算总计 n!次
____if 判断新字符串长度>1 则,
______递归函数(新字符串)
____否则,保存新字符串
__}
}
如注释,该算法的渐近时间复杂度即为 O(n!)
eg."abc"
abc
ab, ac, bc
a, b, c
可见下层是上层每个结果去除一个字符,经过去重得到的结果。
那么程序可以这样写
递归函数名 (字符串){
__保存字符串;
__for 循环对字符串遍历{
____函数:删除该字符串中的某位置字符,返回新字符串____//此处被运算总计 n!次
____if 判断新字符串长度>1 则,
______递归函数(新字符串)
____否则,保存新字符串
__}
}
如注释,该算法的渐近时间复杂度即为 O(n!)