字符串的全排列算法讲解
来源:互联网 发布:大数据电商平台 编辑:程序博客网 时间:2024/06/07 07:20
一、字符串的排列
用C++写一个函数, 如 Foo(const char *str), 打印出 str 的全排列,
如 abc 的全排列: abc, acb, bca, dac, cab, cba
用C++写一个函数, 如 Foo(const char *str), 打印出 str 的全排列,
如 abc 的全排列: abc, acb, bca, dac, cab, cba
一、全排列的递归实现
为方便起见,用123来示例下。123的全排列有123、132、213、231、312、321这六种。首先考虑213和321这二个数是如何得出的。显然这二个都是123中的1与后面两数交换得到的。然后可以将123的第二个数和每三个数交换得到132。同理可以根据213和321来得231和312。因此可以知道——全排列就是从第一个数字起每个数分别与它后面的数字交换。找到这个规律后,递归的代码就很容易写出来了:
#include<iostream> using namespace std; #include<assert.h> void Permutation(char* pStr, char* pBegin) { assert(pStr && pBegin); if(*pBegin == '\0') printf("%s\n",pStr); else { for(char* pCh = pBegin; *pCh != '\0'; pCh++) { swap(*pBegin,*pCh); Permutation(pStr, pBegin+1); swap(*pBegin,*pCh); } } } int main(void) { char str[] = "abc"; Permutation(str,str); return 0; }运行结果如下:
3 0
- 字符串的全排列算法讲解
- 字符串的全排列算法
- 【算法】字符串的全排列
- 算法-字符串的全排列
- 字符串全排列算法
- 字符串全排列算法
- 字符串全排列算法
- 字符串全排列算法
- 算法---字符串全排列
- 算法---字符串全排列
- 字符串全排列算法
- 字符串全排列算法
- 字符串全排列算法
- 字符串全排列算法
- 一个很好的字符串全排列算法
- 求字符串全排列的递归算法
- 字符串的全排列和组合算法
- 字符串的全排列和组合算法
- 各种基本排序算法总结
- OpenGL编程指南 (红宝书 第八版) 样例代码配置问题汇总
- 谷歌发布2015年度搜索排行榜
- I²C总线的总结
- leetcode第3题——**Longest Substring Without Repeating Characters
- 字符串的全排列算法讲解
- Keytool工具使用方法
- 张氏读写锁,c++信号量实现
- C++ bitset的使用简介
- 104. Maximum Depth of Binary Tree(菜鸟刷题第一天)
- linux编译驱动之 make modules SUBDIRS
- C++:顺序容器及顺序容器适配器(stack、queue、priority_queue)
- Mysql备份和恢复
- Spark Shuffle内存分析