字符串排序
来源:互联网 发布:realtek mac 驱动 编辑:程序博客网 时间:2024/06/03 15:09
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;}
0 0
- 字符串排序
- 字符串排序
- 字符串排序
- 字符串排序
- 字符串排序
- 字符串排序。
- 字符串排序
- 字符串排序
- 字符串排序
- 字符串排序
- 字符串排序
- 字符串排序
- 字符串排序
- 字符串排序
- 字符串排序
- 字符串排序
- 字符串排序
- 排序字符串
- python操作mysql数据库
- hdu3336
- android activity与fragment的生命周期详细研究
- webdev.dev 已停止工作解决办法
- inline-block元素的空白间距解决方法
- 字符串排序
- Linux执行.sh文件,提示No such file or directory的问题
- 事件与委托 (本质)
- WebView与js的交互
- 打印日历(java)
- (四)洞悉linux下的Netfilter&iptables:包过滤子系统iptable_filter
- 解决问题: The message received from the server could not be parsed
- Linux进程间通信——信号量
- 时间工具类--java