<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.algopedia.ro/wiki/index.php?action=history&amp;feed=atom&amp;title=Temp_isa</id>
	<title>Temp isa - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.algopedia.ro/wiki/index.php?action=history&amp;feed=atom&amp;title=Temp_isa"/>
	<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=Temp_isa&amp;action=history"/>
	<updated>2026-04-19T09:07:03Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://www.algopedia.ro/wiki/index.php?title=Temp_isa&amp;diff=15571&amp;oldid=prev</id>
		<title>Bella at 10:20, 2 October 2018</title>
		<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=Temp_isa&amp;diff=15571&amp;oldid=prev"/>
		<updated>2018-10-02T10:20:18Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=== Permutari varianta recursiva ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
int n, st[16];&lt;br /&gt;
char folosit[16];&lt;br /&gt;
&lt;br /&gt;
ifstream fin(&amp;quot;permutari.in&amp;quot;);&lt;br /&gt;
ofstream fout(&amp;quot;permutari.out&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
void tipar(){&lt;br /&gt;
  for(int i = 1 ; i &amp;lt;= n ; i++)&lt;br /&gt;
    fout &amp;lt;&amp;lt; st[i] &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
  fout &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void back( int k ){&lt;br /&gt;
  if(k == n + 1)     			// daca am completat stiva pana la nivelul n&lt;br /&gt;
      tipar();		 		// tiparim solutie&lt;br /&gt;
  else					// daca nu am completat solutia&lt;br /&gt;
    for(int i=1 ; i&amp;lt;=n ; i++)	        // pun pe rand pe nivelul curent toate numerele de la 1 la n&lt;br /&gt;
      if(!folosit[i]){			// daca val nu a fost folosita&lt;br /&gt;
        folosit[i] = 1;			// o marchez ca folosita in vectorul de frecvente&lt;br /&gt;
        st[k] = i;			// pun valoarea pe stiva&lt;br /&gt;
        back(k+1);			// trec pe nivelul urmator &lt;br /&gt;
        folosit[i] = 0;			// la reintoarcere din apelul recursiv, marchez ca nefolosita valoarea &lt;br /&gt;
      }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
  fin &amp;gt;&amp;gt; n;   		&lt;br /&gt;
  back(1);			         //pornesc construirea solutiei de la nivelul 1&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Optimizare cu liste - punem valori dintr-o lista cu numere inca nefolosite ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
// Solutie pusa de Cella, a lui Cata?&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
const int MAXN = 10;&lt;br /&gt;
&lt;br /&gt;
int lst[MAXN], v[MAXN], list_len;&lt;br /&gt;
&lt;br /&gt;
inline void delete_from_list(int pos) {&lt;br /&gt;
  lst[pos] = lst[--list_len];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void add_to_list(int pos, int valoare) {&lt;br /&gt;
  lst[list_len++] = lst[pos];&lt;br /&gt;
  lst[pos] = valoare;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void generate_perm(int pos, int n) {&lt;br /&gt;
    if (pos == n) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; n; ++i)&lt;br /&gt;
        cout &amp;lt;&amp;lt; v[i] &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;#039;\n&amp;#039;;&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    for (int i = 0; i &amp;lt; list_len; ++i) {&lt;br /&gt;
      v[pos] = lst[i];&lt;br /&gt;
      delete_from_list(i);&lt;br /&gt;
      generate_perm(pos + 1, n);&lt;br /&gt;
      add_to_list(i, v[pos]);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
int main(){&lt;br /&gt;
    int n;&lt;br /&gt;
    cin &amp;gt;&amp;gt; n;&lt;br /&gt;
    for (int i = 0; i &amp;lt; n; ++i)&lt;br /&gt;
      lst[i] = i + 1;&lt;br /&gt;
    list_len = n;&lt;br /&gt;
    generate_perm(0, n);&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Aranjamente varianta recursiva ===&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
int n, p, st[16];&lt;br /&gt;
char folosit[16];&lt;br /&gt;
&lt;br /&gt;
ifstream fin(&amp;quot;aranjamente.in&amp;quot;);&lt;br /&gt;
ofstream fout(&amp;quot;aranjamente.out&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
void tipar(){&lt;br /&gt;
  for(int i = 1 ; i &amp;lt;= p ; i++)&lt;br /&gt;
    fout &amp;lt;&amp;lt; st[i] &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
  fout &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void back( int k ){&lt;br /&gt;
  if(k == p + 1)              // daca am completat stiva pana la nivelul n&lt;br /&gt;
      tipar();                // tiparim solutie&lt;br /&gt;
  else                        // daca nu am completat solutia&lt;br /&gt;
    for(int i=1 ; i&amp;lt;=n ; i++) // pun pe rand pe nivelul curent toate numerele de la 1 la n&lt;br /&gt;
      if(!folosit[i]){        // daca val nu a fost folosita&lt;br /&gt;
        folosit[i] = 1;       // o marchez ca folosita in vectorul de frecvente&lt;br /&gt;
        st[k] = i;            // pun valoarea pe stiva&lt;br /&gt;
        back(k+1);            // reapelez functia pentru completarea nivelului urmator al solutiei&lt;br /&gt;
        folosit[i] = 0;       // inainte sa iau alta valoare pe nivelul curent, specific ca i nu mai e folosita&lt;br /&gt;
      }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
  fin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; p;&lt;br /&gt;
  back(1);                    // pornesc construirea solutiei de la nivelul 1&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bella</name></author>
	</entry>
</feed>