fbpx

Problema #2205 – permrep – Rezolvari PBInfo

de Mihai-Alexandru

Se consideră un cuvânt C format din litere mici, nu neapărat distincte.

Cerința

Să se afișeze în ordine lexicografică toate cuvintele distincte formate cu exact aceleași caractere ca și C.

Date de intrare

Fișierul de intrare permrep.in conține pe prima linie cuvântul C.

Date de ieșire

Fișierul de ieșire permrep.out va conține pe câte o linie un cuvânt care are exact aceleași litere ca și C.

Restricții și precizări

  • Cuvântul C va avea lungimea de cel mult 9

Exemplu

permrep.in

mama

permrep.out

aamm
amam
amma
maam
mama
mmaa
#include <bits/stdc++.h>

using namespace std;

ifstream cin("permrep.in");
ofstream cout("permrep.out");

int n , p[30];
char s[256] , cuv[256];

void afis()
{
    for(int i = 1 ; i <= n ; i++)
        cout << s[i];
    cout << '\n';
}
void back(int k)
{
    for(int i = 0 ; i < 30 ; i++)
        if(p[i] > 0)
        {
            p[i]--;
            s[k] = i + 'a';
            if(k == n) afis();
            else back(k + 1);
            p[i]++;
        }
}

int main()
{
    cin >> cuv;
    n = strlen(cuv);
    for(int i = 1; i <= n; ++ i) p[cuv[i - 1] - 'a'] ++;
    back(1);
    return 0;
}
Comentarii

S-ar putea sa iti placa