#include <stdio.h>
/*最多50无素*/
#define MAX 50
char dst[MAX] = {'/0'};
/*
[函数说明]
递归调用,输出array的全排列.
[参数]
char *pArray : 需要排列的array
int iIndex : 当前排列编号
int iMax : array元素个数.
[返回值]
无.
[备注]
iMax <= 数组大小.
0 <= iIndex && iIndex <= iMax
*/
void combination(char *pArray, int iIndex, int iMax){
int i;
char cTemp;
for(i = 0; i < iMax; i++){
if(pArray[i] == pArray[i-1]){
;
}else if(pArray[i] != '*'){
dst[iIndex] = pArray[i];
cTemp = pArray[i];
pArray[i] = '*';
if(iIndex == iMax-1){
printf("%s/n", dst);
}else{
//继续
combination(pArray, iIndex+1, iMax);
}
//回溯
pArray[i] = cTemp;
}
}
}
int main( )
{
char arr[4] = {'a', 'b', 'c', 'd'};
combination(arr, 0, 4);
return 0;
}