去重的字符串全排列问题
直接上代码
#include <stdio.h> #include <stdlib.h> void swap(char* x, char* y) { char tmp; tmp = *x; *x = *y; *y = tmp; }
bool is_swap(char *str, int start, int end)
{
int i = start;
for(; i < end; i++)
if(str[i] == str[end])
reurn false; return true;
} void permute(char *str, int i, int n) { int j; if (i == n) printf("%s\n", str); else{ for (j = i; j <= n; j++){ if(is_swap(str, i, j))
{
swap((str+i), (str+j)); permute(str, i+1, n); swap((str+i), (str+j));
} } } } int main() { //method2 char a[] = "ABACCDD"; permute(a,0,6); return 0; }

浙公网安备 33010602011771号