Cod sursa(job #306850)

Utilizator runnaway90Oprescu Radu Constantin runnaway90 Data 22 aprilie 2009 00:10:44
Problema Ordine Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<stdio.h>

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

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

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


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;
}