Pagini recente » Cod sursa (job #2824965) | Cod sursa (job #2385461) | Cod sursa (job #2340899) | Cod sursa (job #557003) | Cod sursa (job #2376346)
#include <iostream>
#include <fstream>
int n, v[30], i;
using namespace std;
ifstream fin("permutari.in");
ofstream fout("permutari.out");
void init(int v[30], int k){
v[k] = 0;
}
void succesor(int v[30], int k, int &as){
if(v[k] < n){
v[k]++;
as=1;
}
else as = 0;
}
void validare(int v[30], int k, int &ev){
ev = 1;
for(i=1;i<k;i++){
if(v[k]==v[i]){
ev = 0;
break;
}
}
}
bool solutie(int k){
if(n==k) return true;
else return false;
}
void afisare(int v[30], int k){
for(i=1;i<=k;i++) fout << v[i] << " ";
fout << endl;
}
void backtracking(int n){
int k=1;
init(v,k);
while(k>0){
int as, ev;
do{ succesor(v,k, as);
if(as)validare(v,k,ev);
} while(as&&!ev);
if(as){
if(solutie(k)){
afisare(v,k);
}
else{
k++;
init(v,k);
}
} else k--;
}
}
int main()
{
fin >> n;
backtracking(n);
fin.close();
fout.close();
return 0;
}