293
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 mult9
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