<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3942_-_Fazan</id>
	<title>3942 - Fazan - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3942_-_Fazan"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3942_-_Fazan&amp;action=history"/>
	<updated>2026-05-01T03:40:51Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3942_-_Fazan&amp;diff=9072&amp;oldid=prev</id>
		<title>Andrada378 at 11:09, 5 January 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3942_-_Fazan&amp;diff=9072&amp;oldid=prev"/>
		<updated>2024-01-05T11:09:03Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;//wiki.universitas.ro/index.php?title=3942_-_Fazan&amp;amp;diff=9072&amp;amp;oldid=8400&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Andrada378</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3942_-_Fazan&amp;diff=8400&amp;oldid=prev</id>
		<title>Andrada378: Pagină nouă: &#039;&#039;&#039;&#039;&#039;&lt;u&gt;Cerința&lt;/u&gt;&#039;&#039;&#039;&#039;&#039;  Se dau n cuvinte distincte formate din litere mici și un număr m. Afișați în ordine lexicografică toate șirurile de câte m cuvinte distincte dintre cele date, care respectă regula jocului Fazan. La jocul Fazan o succesiune de două cuvine a și b se consideră corectă dacă ultimele două litere din cuvântul a sunt identice cu primele două din b. De exemplu, cuvintele fazan și anterior sunt corecte în această ordine.  &lt;u&gt;&#039;&#039;&#039;&#039;&#039;Date de...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3942_-_Fazan&amp;diff=8400&amp;oldid=prev"/>
		<updated>2023-12-26T17:55:33Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;lt;u&amp;gt;Cerința&amp;lt;/u&amp;gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;  Se dau n cuvinte distincte formate din litere mici și un număr m. Afișați în ordine lexicografică toate șirurile de câte m cuvinte distincte dintre cele date, care respectă regula jocului Fazan. La jocul Fazan o succesiune de două cuvine a și b se consideră corectă dacă ultimele două litere din cuvântul a sunt identice cu primele două din b. De exemplu, cuvintele fazan și anterior sunt corecte în această ordine.  &amp;lt;u&amp;gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Date de...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;lt;u&amp;gt;Cerința&amp;lt;/u&amp;gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Se dau n cuvinte distincte formate din litere mici și un număr m. Afișați în ordine lexicografică toate șirurile de câte m cuvinte distincte dintre cele date, care respectă regula jocului Fazan. La jocul Fazan o succesiune de două cuvine a și b se consideră corectă dacă ultimele două litere din cuvântul a sunt identice cu primele două din b. De exemplu, cuvintele fazan și anterior sunt corecte în această ordine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Date de intrare&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programul citește de la tastatură numerele n și m, iar apoi n cuvinte, separate prin spații sau scrise pe rânduri separate.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;lt;u&amp;gt;&amp;#039;&amp;#039;Date de ieșire&amp;#039;&amp;#039;&amp;lt;/u&amp;gt;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Programul va afișa pe ecran pe linii separate în ordine lexicografică toate șirurile de câte m cuvinte dintre cele date, care respectă regula jocului Fazan. Cuvintele de pe același rând se vor separa prin câte un spațiu.&lt;br /&gt;
&lt;br /&gt;
Dacă nu se pot alege m cuvinte care să respecte condiția, atunci se va afișa IMPOSIBIL.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;lt;u&amp;gt;Restricții și precizări&amp;lt;/u&amp;gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
1 ≤ m &amp;lt; n ≤ 30&lt;br /&gt;
&lt;br /&gt;
cele n cuvinte sunt formate din litere mici, au lungimea cel puțin 2 și cel mult 20 și sunt distincte.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;lt;u&amp;gt;Exemplu:&amp;lt;/u&amp;gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Intrare&lt;br /&gt;
&lt;br /&gt;
11 3&lt;br /&gt;
&lt;br /&gt;
cosmin nasture repede cosmina alina interactiv ascutit anual incrementare ananas banana&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
&lt;br /&gt;
alina nasture repede &lt;br /&gt;
&lt;br /&gt;
anual alina nasture &lt;br /&gt;
&lt;br /&gt;
banana nasture repede &lt;br /&gt;
&lt;br /&gt;
cosmin incrementare repede &lt;br /&gt;
&lt;br /&gt;
cosmina nasture repede &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;lt;u&amp;gt;Rezolvare&amp;lt;/u&amp;gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
def este_valid(ultim_cuvant, cuvant):&lt;br /&gt;
&lt;br /&gt;
    # Verifica daca ultimele doua litere ale cuvantului &amp;#039;ultim_cuvant&amp;#039;&lt;br /&gt;
&lt;br /&gt;
    # sunt identice cu primele doua litere ale cuvantului &amp;#039;cuvant&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
    return ultim_cuvant[-2:] == cuvant[:2]&lt;br /&gt;
&lt;br /&gt;
def backtracking(alese, cuvinte, solutie_parciala, rezultate):&lt;br /&gt;
&lt;br /&gt;
    # Realizeaza algoritmul de backtracking pentru formarea șirului de cuvinte&lt;br /&gt;
&lt;br /&gt;
    # de lungime &amp;#039;alese&amp;#039; care respectă regula jocului Fazan.&lt;br /&gt;
&lt;br /&gt;
    if alese == 0:&lt;br /&gt;
&lt;br /&gt;
        rezultate.append(solutie_parciala[:])&lt;br /&gt;
&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    ultim_cuvant = solutie_parciala[-1] if solutie_parciala else &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    for cuvant in cuvinte:&lt;br /&gt;
&lt;br /&gt;
        if cuvant not in solutie_parciala and este_valid(ultim_cuvant, cuvant):&lt;br /&gt;
&lt;br /&gt;
            solutie_parciala.append(cuvant)&lt;br /&gt;
&lt;br /&gt;
            backtracking(alese - 1, cuvinte, solutie_parciala, rezultate)&lt;br /&gt;
&lt;br /&gt;
            solutie_parciala.pop()&lt;br /&gt;
&lt;br /&gt;
def afiseaza_alegeri(cuvinte, m):&lt;br /&gt;
&lt;br /&gt;
    # Afișează șirurile de cuvinte de lungime &amp;#039;m&amp;#039; care respectă regula jocului Fazan.&lt;br /&gt;
&lt;br /&gt;
    rezultate = []&lt;br /&gt;
&lt;br /&gt;
    for cuvant in cuvinte:&lt;br /&gt;
&lt;br /&gt;
        backtracking(m - 1, cuvinte, [cuvant], rezultate)&lt;br /&gt;
&lt;br /&gt;
    rezultate = sorted(rezultate)&lt;br /&gt;
&lt;br /&gt;
    if not rezultate:&lt;br /&gt;
&lt;br /&gt;
        print(&amp;quot;IMPOSIBIL&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    else:&lt;br /&gt;
&lt;br /&gt;
        for solutie in rezultate:&lt;br /&gt;
&lt;br /&gt;
            print(&amp;quot; &amp;quot;.join(solutie))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Citire date de intrare&lt;br /&gt;
&lt;br /&gt;
n, m = map(int, input().split())&lt;br /&gt;
&lt;br /&gt;
cuvinte = input().split()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Apelare funcție pentru afișare rezultate&lt;br /&gt;
&lt;br /&gt;
afiseaza_alegeri(cuvinte, m)&lt;/div&gt;</summary>
		<author><name>Andrada378</name></author>
	</entry>
</feed>