Pagini recente » Cod sursa (job #127776) | Istoria paginii runda/luni_ora_10/clasament | Istoria paginii runda/simulareinfo_oji_7_9 | Diferente pentru warm-up-2019/solutii/shoturi intre reviziile 47 si 46 | Cod sursa (job #2002029)
#include <fstream>
using namespace std;
ifstream fin("permutari.in");
ofstream fout("permutari.out");
int n,v[9],k;
bool folosit[9];
void init(int k)
{
v[k]=0;
}
bool succesor(int k)
{
if (v[k]<n)
{
v[k]++;
return true;
}
return false;
}
bool valid(int k)
{
return !folosit[v[k]];
}
bool sol(int k)
{
return k==n;
}
void afisare(int k)
{
for (int i=1;i<=k;i++)
fout << v[i] << " ";
fout << "\n";
}
void backtracking(int k)
{
init(k);
while (succesor(k))
if (valid(k))
if (sol(k)) afisare(k);
else
{
folosit[v[k]]=1;
backtracking(k+1);
folosit[v[k]]=0;
}
}
int main()
{
fin >> n;
backtracking(1);
return 0;
}