字符串全排列
来源:互联网 发布:c语言ceil 编辑:程序博客网 时间:2024/06/10 07:51
void swap_char(char &a, char &b){ char t = a; a = b; b = t;}// 重复字符处理bool foo(char* str, char p, int begins, int ends){ for(int i = begins; i <= ends; ++i) if (str[i] == p) return true; return false;}// 统计static int n=0;// 递归void permutation_1(char *str, int left, int right){ if (left>=right) { ++n; printf("%s\n", str); return; } for (int i=left; i < right; ++i) { if (left != i && (str[left] == str[i] || foo(str, str[i], left+1, i-1))) continue; swap_char(str[left], str[i]); permutation_1(str, left+1, right); swap_char(str[left], str[i]); }}