360
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
Cva 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