题意:输出字符串的全排列
注释:去看STL的next_permutation函数,无比强大
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; void print_permutation(int n, char *p, char * a,int cur){ if(cur == n){ for(int i = 0; i < n; i++) printf("%c", a[i]); printf("\n"); } else for(int i = 0; i < n; i++){ if(!i || p[i] != p[i - 1]) { int c1 = 0, c2 = 0; for(int j = 0; j < cur; j++) if(a[j] == p[i]) c1++; for(int j = 0; j < n; j++) if(p[i] == p[j]) c2++; if(c1 < c2) { a[cur] = p[i]; print_permutation(n, p, a, cur + 1); } } } } int main(){ int n; scanf("%d", &n); getchar(); while(n--){ char s[15], a[15]; gets(s); int l = strlen(s); sort(s, s + l); print_permutation(l, s, a, 0); printf("\n"); } return 0; }