void combination(char strArray[], int n) {
int z = strlen(strArray);
int s[10];
int i,j;
for (i = 0;i < n; ++i) s[i] = i;
while (s[0] != z) {
//输出当前组合
for (i = 0; i < n; ++i) {
printf("%c", strArray[s[i]]);
}
printf("\n");
bool next;
do {
next = false;
//获得下个组合
++s[n-1];
for (i = n - 1; i ; --i) {
if (s[i] != z)
break;
++s[i-1];
s[i]=0;
}
//过滤掉有相同元素的
for (i = 0; i< n; ++i) {
for (j = i + 1; j < n; ++j) {
if (s[i] == s[j]) {
next = true;
break;
}
}
}
} while (next);
}
}