之前面试的一道题,貌似我的方法简单些,嘎嘎:
#include "stdio.h"
#include "string.h"
void Exchange(char* pStr,int i,int j)
{
char temp = pStr[i];
pStr[i] = pStr[j];
pStr[j] = temp;
}
void DoPermute(char* pStr, int k, int n)
{
int len = strlen(pStr);
if (k == n)
{
for (int i=0; i < k;++i)
{
printf("%c",pStr[i]);
}
printf("\n");
}
else
{
for (int i=k; i < len; ++i)
{
Exchange(pStr,i,k);
DoPermute(pStr,k+1,n);
Exchange(pStr,i,k);
}
}
}
void RecursivePermute(char* pStr,int n)
{
DoPermute(pStr,0,n);
}
int main()
{
char temp[] = "abcde";
RecursivePermute(temp,3);
}