2710 - Cuv
Enunț
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.În cazul în care restricțiile nu sunt îndeplinite, se va afișa mesajul "Nu corespunde restricțiilor impuse".
Restricții și precizări
1 ≤ n ≤ 9
- Cele
n
cuvinte au cel puțin o literă și cel mult6
litere - Este garantat că
C
se poate forma din cuvintele inițiale
Exemplul 1:
Intrare
3 gem de caise
Ieșire
eda
Exemplul 2:
Intrare
10
Ieșire
"Datele nu corespund restrictiilor impuse"
Rezolvare:
def backtracking_permutations(words, current_permutation, used_letters, result):
if len(current_permutation) == len(words):
result.append(current_permutation)
return
current_word = words[len(current_permutation)]
for letter in current_word:
if letter not in used_letters:
backtracking_permutations(
words,
current_permutation + letter,
used_letters + letter,
result
)
def find_min_lexicographic_permutation(words):
result = []
backtracking_permutations(words, "", "", result)
return min(result)
def check_restrictions(n, words):
if n < 1 or n > 9:
return False
for word in words:
if len(word) < 1 or len(word) > 6:
return False
return True
def main():
try:
n = int(input("Introduceti numarul de cuvinte: "))
if n > 9:
print("Datele nu corespund restrictiilor impuse.")
return
words = input("Introduceti cele %d cuvinte separate prin spațiu: " % n).split()
if not check_restrictions(n, words):
print("Datele nu corespund restrictiilor impuse.")
return
result = find_min_lexicographic_permutation(words)
print("Cuvântul C minim lexicografic este:", result)
except ValueError:
print("Datele nu corespund restrictiilor impuse.")
if __name__ == "__main__":
main()