299
Se dau n cuvinte formate doar din litere mici. Trebuie construit un nou cuvânt C de n litere format astfel: prima literă a lui C este din primul cuvânt, a doua literă este din al doilea cuvânt, …, a n-a literă este din cel de-al n-lea cuvânt. În plus, literele cuvântului C trebuie să fie distincte.
Cerința
Să se determine cuvântul C minim lexicografic ce se poate forma utilizând litere distincte extrase din cuvintele inițiale.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi cele n cuvinte separate prin spațiu.
Date de ieșire
Programul va afișa pe ecran cuvântul C minim lexicografic care se poate obține din litere distincte.
Restricții și precizări
1 ≤ n ≤ 9- Cele
ncuvinte au cel puțin o literă și cel mult6litere - Este garantat că
Cse poate forma din cuvintele inițiale
Exemplu
Intrare
3 gem de caise
Ieșire
eda
#include <bits/stdc++.h>
using namespace std;
int n;
char cuv[11][11], rez[11];
int f[30], ok;
void afisare()
{
for(int i = 1 ; i <= n ; i++)
cout << rez[i];
}
void back(int k)
{
for (int i = 0; i < strlen(cuv[k]); ++ i)
if (f[cuv[k][i] - 'a'] == 0)
{
f[cuv[k][i] - 'a'] = 1;
rez[k] = cuv[k][i];
if (ok)return;
if (k == n)
{
ok = 1;
afisare();
}
else back(k + 1);
f[cuv[k][i] - 'a'] = 0;
}
}
int main()
{
cin >> n;
for (int i = 1; i <= n; i ++)
{
cin >> cuv[i];
sort(cuv[i], cuv[i] + strlen(cuv[i]));
}
back(1);
}
Comentarii