Rezolvare completă PbInfo #2710 cuv

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

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema cuv:

#include <bits/stdc++.h>
using namespace std;

char a[11][7];
int d[11], n, st[11], viz[26];

void Citire()
{
    int i;
    cin >> n;
    for (i = 1; i <= n; i++)
    {
        cin >> a[i];
        d[i] = strlen(a[i]);
        sort(a[i], a[i] + d[i]);
    }
}

void Afisare()
{
    for (int i = 1; i <= n; i++)
        cout << a[i][st[i]];
    cout << "\n";
    exit(0);
}

void Back(int top)
{
    if (top == n + 1) Afisare();
    else for (int i = 0; i < d[top]; i++)
    {
        int j = a[top][i] - 'a';
        if (viz[j] == 0)
        {
            viz[j] = 1;
            st[top] = i;
            Back(top + 1);
            viz[j] = 0;
        }
    }
}

int main()
{
    Citire();
    Back(1);
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #2710 cuv

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2710 cuv de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!