生成字符串的全排列,可以用回溯法实现,具体代码如下:
/* 回溯法生成字符串的全排列 */
#include "stdafx.h"
void perm(char a[], int t);
void swap(char a[], int i, int j); /* 交换数组a中下标为i和j的元素的位置 */
int _tmain(int argc, _TCHAR* argv[])
{
char a[] = "ABC";
perm(a, 0);
system("pause");
return 0;
}
void swap(char a[], int i, int j)
{
char temp = a[i];
a[i] = a[j];
a[j] = temp;
}
void perm(char a[], int t)
{
if (t == strlen(a)) { /* 已搜索至叶结点 */
for (int i = 0; i < strlen(a); i ++) printf("%c ", a[i]);
printf("\n");
} else
for (int i = t; i < strlen(a); i++) {
swap(a, t, i);
perm(a, t + 1); /* 搜索子结点 */
swap(a, t, i); /* 恢复初始序列以回溯 */
}
}
分享到:
相关推荐
Java写的源码,解决各种字符串全排列问题,已解决重复问题,经过上机调试可直接运行
主要介绍了Java实现字符数组全排列的方法,涉及Java针对字符数组的遍历及排序算法的实现技巧,需要的朋友可以参考下
常见得全排列有三种解决方案,for循环穷举,stl摸板函数next_permutation,还有DFS深度优先搜索,当我们遇到带有重复的字符串时应该考虑除去重复的部分。
可以打印出字符串的全排列,代码是C语音风格的,刚学习编程时写的代码
问题 输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a,b...对于只有一个元素的集合,可以直接生成全排列。所以全排列的递归终止条件很明确,只有一个元素时。我们可以分析一下全排
CC++全排列..1--n的全排列以及字符串的全排列
Java根据正则表达式生成字符串,包括了Xeger和automaton
输出有重复字符的全排列,C++源码......
主要介绍了Python字符串的全排列算法,结合实例形式较为详细的总结分析了Python字符串全排列的常见操作技巧,需要的朋友可以参考下
python3 实现js中JSEncrypt encrypt方法,rsa模块根据字符串公钥生成加密字符串 使用时直接调用rsa_encrypt(s, pubkey_str)方法就好了,第一个参数为待加密字符串,第二个参数为公钥,返回值为加密后的字符串 其中_...
excel生成20位随机字符串,按F9更新,可以做为随机密码使用。
主要给大家介绍了关于python生成各种字符串的方法实例,给大家提供些思路,抛砖引玉,希望大家能够喜欢
java随机生成字符串(字符随机生成类 生成随机字符组合).docx
在本篇文章里小编给大家整理了关于PHP实现字符串的全排列的相关知识点内容,需要的朋友们学习参考下。
VB制作随机生成32位字符串,比较简单,不过可以做为密码生成器使用。
由php对象生成json字符串 把php对象变成json字符串.zip