字符串全排列算法
来源:互联网 发布:大推力火箭 知乎 编辑:程序博客网 时间:2024/05/21 11:04
转载地址:http://blog.csdn.net/morewindows/article/details/7370155。
用C++写一个函数, 如 Foo(const char *str), 打印出 str 的全排列,
如 abc 的全排列: abc, acb, bca, dac, cab, cba。
//去重全排列的递归实现#include <stdio.h>#include <string.h>void Swap(char *a, char *b){char t = *a;*a = *b;*b = t;}
//在pszStr数组中,[nBegin,nEnd)中是否有数字与下标为nEnd的数字相等bool IsSwap(char *pszStr, int nBegin, int nEnd){for (int i = nBegin; i < nEnd; i++)if (pszStr[i] == pszStr[nEnd])return false;return true;}
//k表示当前选取到第几个数,m表示共有多少数.void AllRange(char *pszStr, int k, int m){if (k == m){static int s_i = 1;printf(" 第%3d个排列\t%s\n", s_i++, pszStr);}else{for (int i = k; i <= m; i++) //第i个数分别与它后面的数字交换就能得到新的排列{if (IsSwap(pszStr, k, i)){Swap(pszStr + k, pszStr + i);AllRange(pszStr, k + 1, m);Swap(pszStr + k, pszStr + i);}}}}
void Foo(char *pszStr){AllRange(pszStr, 0, strlen(pszStr) - 1);}
int main(){printf(" 去重全排列的递归实现\n");printf(" --by MoreWindows( http://blog.csdn.net/MoreWindows )--\n\n");char szTextStr[] = "122";printf("%s的全排列如下:\n", szTextStr);Foo(szTextStr);return 0;}
- 字符串全排列算法
- 字符串全排列算法
- 字符串全排列算法
- 字符串全排列算法
- 算法---字符串全排列
- 算法---字符串全排列
- 字符串全排列算法
- 字符串全排列算法
- 字符串全排列算法
- 字符串全排列算法
- 字符串的全排列算法
- 字符串全排列生成算法
- 【算法】字符串的全排列
- java算法字符串全排列
- 算法-字符串的全排列
- Blog1:字符串全排列算法
- 算法-字符串之全排列
- 算法-字符串全排列问题
- 小组级git服务器搭建
- 读《java编程思想》 数组
- Struts2慢慢学之四----通配符
- 2440bsp wince启动分析
- arm assemble register
- 字符串全排列算法
- hp服务器+centos6.2+perl+lnmp
- Android TextView大全
- 插入排序(insertion sort)
- 全选/取消 gridview中checkbox的功能实现
- 动态链接库的数据及动态链接库重定向
- c语言时间比对
- Linux内核启动过程分析
- 国标码 区位码 机内码 输入码