全排列思想:全排列数f(n)=n!(定义0!=1)
如1,2,3三个元素的全排列为:
1,2,3
1,3,2
2,1,3
2,3,1
3,1,2
3,2,1
共3*2*1=6种 3!
贴上代码块:
贴上代码块:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void Swap(char* a, char* b)
{
char t = *a;
*a = *b;
*b = t;
}
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++)
{
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()
{
char a[] = "123";
Foo(a);
system("pause");
return 0;
}