Cod sursa(job #306846)

Utilizator runnaway90Oprescu Radu Constantin runnaway90 Data 22 aprilie 2009 00:05:20
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>

int a[50], st[1000002], n;

void afisare(){
int i;
        for (i = 1; i <= n; i++)
            printf("%c", 'a' + st[i]);
        printf("\n");
}

void back(int k){
int i;
    if (k == n+1) afisare();
    else{
        for ( i = 0; i <= 27; i++)
            if (a[i] && i != st[k-1]){
                    a[i] --;
                    st[k] = i;
                    back(k+1);
                    break;
            }
    }
}


int main (){
char c;
    freopen("ordine.in","r",stdin);
    freopen("ordine.out","w",stdout);

    scanf("%c", &c);

    for (n = 0; c != '\n'; n++, scanf("%c", &c)){
         a[c - 'a']++;
    }

    for (int i = 0; i <= 27; i++)
        if (a[i]){
            st[1] = i; a[i]--; break;
        }

    back(2);

    return 0;
}