Pagini recente » Cod sursa (job #2149716) | Cod sursa (job #363661) | Cod sursa (job #3123462) | Cod sursa (job #2902742) | Cod sursa (job #2303918)
#include <iostream>
#include <fstream>
using namespace std;
int st[30], n;
bool lepes(int k)
{
if(st[k] < n){
st[k]++;
return true;
}
return false;
}
bool ellenorzes(int k)
{
for(int i = 1; i < k; ++i){
if(st[k] == st[i]){
return false;
}
}
return true;
}
bool megoldas(int k)
{
return n == k;
}
void backTracking()
{
int k = 1;
bool van, jo;
st[k] = 0;
while(k){
do{
van = lepes(k);
if(van){
jo = ellenorzes(k);
}
}while(van && !jo);
if(van){
if(megoldas(k)){
for(int i = 1; i <= k; ++i){
printf("%d ", st[i]);
}
printf("\n");
}
else{
k++;
st[k] = 0;
}
}
else{
k--;
}
}
}
int main()
{
freopen("permutari.in", "r", stdin);
freopen("permutari.out", "w", stdout);
scanf("%d", &n);
backTracking();
return 0;
}