#include <stdio.h> #define MAX 100 int len, sum; char list[MAX]; static int perm(int k, int m); static int swap(int i, int j); int main() { scanf("%s",list); len = strlen(list); sum = perm(0, len-1);//not include '/n' printf("sum = %d/n", sum); return 0; } static int perm(int k, int m) { int i; if(k == len-2) { for(i = 0; i<= m; i++) { printf("%c", list[i]); } sum++; printf("/n"); } for(i = k; i <= m; i++) { swap(k, i); perm(k+1, m); swap(k, i);//回溯 } return sum; } static int swap(int i, int j) { char temp; temp = list[i]; list[i] = list[j]; list[j] = temp; return 0; }