Pagini recente » Cod sursa (job #260333) | Cod sursa (job #2594757) | Cod sursa (job #1391781) | Cod sursa (job #801949) | Cod sursa (job #870307)
Cod sursa(job #870307)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("permutari.in");
ofstream g("permutari.out");
int n,v[10];
void citire()
{
f>>n;
}
int first(int k)
{
for(int val=1;val<=n;val++) {
bool gasit = false;
for(int i=1;i<=k;i++)
{
if(v[i]==val) {
gasit=true;
break;
}
}
if(!gasit) {
return val;
}
}
}
void afisare()
{
for( int i=1;i<=n;i++)
{
g<<v[i]<<" ";
}
g<<'\n';
}
bool validare(int k) {
for(int i=1;i<=k;i++)
{
for( int j=1;j<=k;j++)
{
if(v[i]==v[j] && i!=j)
{
return false;
}
}
}
return true;
}
int next(int k) {
for(int val=v[k]+1;val<=n;val++) {
bool gasit = false;
for(int i=1;i<=k;i++)
{
if(v[i]==val) {
gasit=true;
break;
}
}
if(!gasit) {
return val;
}
}
return 0;
}
void proces(int k)
{
v[k] = first(k);
do {
if(validare(k))
{
if(k == n)
{
afisare();
}
else{
proces(k+1);
}
}
} while(v[k] = next(k));
v[k] = 0;
k--;
}
int main()
{
citire();
proces(1);
return 0;
}