有递归和非递归的方法,我这里用的是STL的一个next_permutation()函数
#include <stdio.h> #include <algorithm> #include <string.h> using namespace std; void permutation(char *str,int length) { sort(str,str + length); printf("%s\n",str); while (next_permutation(str,str + length)) { printf("%s\n",str); } printf("\n"); } int main() { char str[15]; while (scanf("%s",str)!=EOF) { int length; length = strlen(str); permutation(str,length); } return 0; }