Pagini recente » Cod sursa (job #2819971) | Cod sursa (job #3264344) | Cod sursa (job #2740237) | Cod sursa (job #1203499) | Cod sursa (job #1424633)
#include <cstdio>
#include <vector>
using namespace std;
vector<int> a;
int n;
void afisare(int n)
{
for(int i = 0; i < n; i++)
{
printf("%i ", a.at(i));
}
printf("\n");
}
bool isValid(int k)
{
vector<int> frec;
for(int i = 0; i < 10; i++)
{
frec.push_back(0);
}
for(int i = 0; i <= k; i++)
{
frec.at(a.at(i))++;
}
for(int i = 1; i < 10; i++)
{
if(frec.at(i)>1)
{
return 0;
}
}
return 1;
}
void backtrack(int k)
{
if(k==n)
{
afisare(n);
}
else
{
for(int i = 1; i <= n; i++)
{
a.at(k)=i;
if(isValid(k))
{
backtrack(k+1);
}
}
}
}
int main()
{
freopen("permutari.in", "r", stdin);
freopen("permutari.out", "w", stdout);
scanf("%i", &n);
for(int i = 0; i < n; i++)
{
a.push_back(0);
}
backtrack(0);
return 0;
}