Pagini recente » Cod sursa (job #631679) | Cod sursa (job #1530645) | Cod sursa (job #1453338) | Cod sursa (job #24366) | Cod sursa (job #2800897)
#include <fstream>
using namespace std;
int Fibonacci(int k)//trebuie sa returneze al k-lea termen din sirul Fibonacci
{
if(k==1 || k==2) return 1;
return Fibonacci(k-1) + Fibonacci(k-2);
}
//ne propunem sa generam permutarile unei multimi cu n elemente
int st[10], top, n;
bool viz[10];
/*
Semnificatia evctorului viz:
daca elementul x este deja pus in stiva,
atunci viz[x] = true
altfel viz[x] = false
*/
ofstream fout("permutari.out");
void Afisare()
{
int i;
for(i=1;i<=n;++i)
fout<<st[i]<<" ";
fout<<"\n";
}
bool Verifica(int x, int top)
{
return viz[x]==false;
}
void Back(int top)
{
//top este nivelul la care vreau sa pun acum in stiva
if(top==n+1)//deja stiva este plina, trebuie sa o afisez
Afisare();
else
{
for(int i=1;i<=n;++i)//la pozitia actuala (top) incerc sa
//pun fiecare valoare disponibila
if(Verifica(i, top-1))
{
st[top] = i;//il pun pe i
viz[i] = true;
Back(top+1);//generez toate permutarile in care i este
//pus pe pozitia top
viz[i] = false;//important
}
}
}
int main()
{
ifstream fin("permutari.in");
fin>>n;
fin.close();
Back(1);
return 0;
}