fbpx

Problema #2710 – cuv – Rezolvari PBInfo

de Mihai-Alexandru

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 n cuvinte au cel puțin o literă și cel mult 6 litere
  • Este garantat că C se 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

S-ar putea sa iti placa