#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char str[20];
void swap(int a, int b) {
char tmp = str[b];
str[b] = str[a];
str[a] = tmp;
}
void DFS(int start, int len) {
if (len == 1)
printf("%s\n", str);
else {
for (int i = 0; i <= len - 1; i++) {
sort(str + start, str + start + len); //重新排序,并且不用再回来
swap(start, start + i);
DFS(start + 1, len - 1);
// swap(start + i,start ); //不用这步,dfs返回后的内容肯能不一致,用sort即可
}
}
}
int main() {
while (scanf("%s", str) != EOF) {
int len = strlen(str);
DFS(0, len);
printf("\n"); //感觉这个多余,但加这个才通过
}
return 0;
}
题目链接:
http://ac.jobdu.com/problem.php?pid=1120