2710 - Cuv: Difference between revisions
Rus Marius (talk | contribs) Pagină nouă: == Enunț == Se dau <code>n</code> cuvinte formate doar din litere mici. Trebuie construit un nou cuvânt <code>C</code> de <code>n</code> litere format astfel: prima literă a lui <code>C</code> este din primul cuvânt, a doua literă este din al doilea cuvânt, …, a <code>n</code>-a literă este din cel de-al <code>n</code>-lea cuvânt. În plus, literele cuvântului <code>C</code> trebuie să fie distincte. = Cerința = Să se determine cuvântul <code>C</code> minim le... |
Rus Marius (talk | contribs) No edit summary |
||
Line 9: | Line 9: | ||
= Date de ieșire = | = Date de ieșire = | ||
Programul va afișa pe ecran cuvântul <code>C</code> minim lexicografic care se poate obține din litere distincte. | Programul va afișa pe ecran cuvântul <code>C</code> 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 = | = Restricții și precizări = |
Latest revision as of 14:32, 4 January 2024
Enunț[edit | edit source]
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[edit | edit source]
Să se determine cuvântul C
minim lexicografic ce se poate forma utilizând litere distincte extrase din cuvintele inițiale.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n
, iar apoi cele n
cuvinte separate prin spațiu.
Date de ieșire[edit | edit source]
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[edit | edit source]
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:[edit | edit source]
Intrare
3 gem de caise
Ieșire
eda
Exemplul 2:[edit | edit source]
Intrare
10
Ieșire
"Datele nu corespund restrictiilor impuse"
Rezolvare:[edit | edit source]
<syntaxhighlight lang="python3" line="1"> 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()
</syntaxhighlight>