Pagini recente » Cod sursa (job #1980765) | Cod sursa (job #2982089) | Cod sursa (job #2700148) | Cod sursa (job #480092) | Cod sursa (job #655972)
Cod sursa(job #655972)
#include<iostream>
#include<fstream>
using namespace std;
int n, st[10], k=1;
ofstream fout("permutari.out");
void scrie()
{
for (int i=1;i<=n;i++)
fout<<st[i]<<' ';
fout<<'\n';
}
inline int verificare (int k)
{
for (int i=1;i<k;++i)
if (st[i]==st[k]) return 0;
return 1;
}
void backtracking ()
{
while (k>=1)
{
if (k==n+1)
{
scrie();
--k;
}
else if (k<=n)
{
if (st[k]<n)
{
int ok=0; //daca fac --k
++st[k];
while (!verificare(k))
if (st[k]<n) ++st[k];
else {st[k]=0; --k; ok=1;}
if (!ok) ++k;
}
else {st[k]=0; --k;}
}
}
}
int main ()
{
ifstream fin ("permutari.in");
fin>>n;
backtracking();
fin.close(); fout.close();
return 0;
}