Pagini recente » Cod sursa (job #1218872) | Cod sursa (job #1910331) | Cod sursa (job #2896580) | Cod sursa (job #289099) | Cod sursa (job #518614)
Cod sursa(job #518614)
// Metoda Backtracking
#include<fstream>
using namespace std;
int a[30],n,k;
ofstream fout("permutari.out");
int Valid()
{
int i;
for(i=1;i<k;i++)
if(a[i]==a[k]) return 0;
return 1;
}
void ScrieSol()
{
int i;
for(i=1;i<=n;i++)
fout<<a[i]<<' ';
fout<<"\n";
}
void GenPerm()
{
int cand;
a[1]=0;
k=1;
while(k>0)
{
cand=0;
while(!cand && a[k]<n)
{
a[k]++;
cand=Valid();
}
if(!cand) k--;
else if(k==n) ScrieSol();
else a[++k]=0;
}
}
int main()
{
ifstream fin("permutari.in");
fin>>n;
fin.close();
GenPerm();
fout.close();
return 0;
}