277
Cerința
Se citește un cuvânt format din cel puțin două și cel mult zece caractere litere mici distincte care conține cel puțin două vocale. Afișați în ordine lexicografică anagramele cuvântului citit care au proprietatea că încep și se termină cu o vocală.
Date de intrare
Programul citește de la tastatură șirul de caractere.
Date de ieșire
Programul va afișa pe ecran anagramele cerute, câte una pe un rând.
Restricții și precizări
- numărul de caractere ale șirului dat este cuprins între
2
și10
; - cuvântul dat este format din litere mici distincte și conține cel puțin două vocale;
- vocalele sunt
a
,e
,i
,o
,u
;
Exemplu
Intrare
alin
Ieșire
alni anli ilna inla
#include <bits/stdc++.h> using namespace std; int n , x[30] , p[30] , cnt; char cuv[30] , s[30]; int voc(char a) { return a == 'a' || a == 'e' || a == 'i' || a == 'o' || a == 'u'; } int afisare() { int pp = 1; for(int i = 1 ; i <= n ; i++) cout << s[x[i] - 1]; cout << '\n'; } void back(int k) { for(int i = 1 ; i <= n ; i++) if(!p[i]) { x[k] = i; p[i] = 1; if(voc(s[x[1] - 1])) if(k == n) { if(voc(s[x[k] - 1]))afisare(); } else back(k + 1); p[i] = 0; } } int main() { cin >> s; n = strlen(s); for(int i = 0 ; i < n ; i++) for(int j = i + 1 ; j < n ; j++) if(s[i] > s[j]) swap(s[i] , s[j]); back(1); }
Comentarii