void pailie(int k,int n,char a[]) { int i,j; char temp; if (k>n) { for(i=1;i<=n;i++) printf("%c",a[i]); printf("\n"); } else { for(i=k;i<=n;i++) { if(i>k){ temp=a[i]; for(j=i;j>=k+1;j--) a[j]=a[j-1]; a[k]=temp; } pailie(k+1,n,a); if(i>k) { temp=a[k]; for(j=k;j<=i-1;j++) a[j]=a[j+1]; a[i]=temp; } } } }
int main() { //freopen("/home/lintingbin/test.txt", "r", stdin); char str[N]; int len; while (scanf("%s", str) != EOF) { memset(used, 0, N*sizeof(int)); len = strlen(str); result[len] = '\0'; sort(str, len); pailie(str, len, 0); } return 0; }
int main() { char a[255]={0}; int n,i; while(scanf("%d",&n)+1) { for(i=1;i<=n;i++) { getchar(); scanf("%c",&a[i]); } sort(a,n); pailie(1,n,a); printf("\n"); } return 0; }
void pailie(char *str, int len, int index) { int i, j, repeat[N] = {0}; if (index == len) printf("%s\n", result); for (i = 0; i < len; i++) { if (used[i] == 1) continue; result[index] = str[i]; if (isRepeat(repeat, i, str[i])) continue; repeat[i] = str[i]; used[i] = 1; pailie(str, len, index+1); used[i] = 0; } }