Pagini recente » Cod sursa (job #1032038) | Cod sursa (job #2406583) | Cod sursa (job #734499) | Cod sursa (job #3281268) | Cod sursa (job #2085080)
#include<iostream>
#include<fstream>
using namespace std;
int n;
ifstream fin("permutari.in");
ofstream fout("permutari.out");
void afisare(int a[11])
{
for(int i=1;i<=n;i++) fout<<a[i]<<' ';
fout<<endl;
}
bool checksol(int a[11],int poz)
{
for(int i=1;i<poz;i++)
if(a[i]==a[poz]) return 0;
return 1;
}
bool checksol2(int a[11],int poz,int x)
{
for(int i=1;i<poz;i++)
if(a[i]==x) return 0;
return 1;
}
int findpsol(int a[11],int poz)
{
for(int i=a[poz]+1;i<=n;i++)
{
if(checksol2(a,poz,i)) {
return i;}}
return 0;
}
void build(int a[11])
{
for(int i=1;i<=n;i++)
if(a[i]==0) a[i]=findpsol(a,i);
}
int main()
{
fin>>n;int a[11]={0};
for(int i=1;i<=n;i++) a[i]=i;
int k=n-1;
afisare(a);
linie: while(k!=0)
{
a[k+1]=0;
a[k]=findpsol(a,k);
if(a[k]==0) k--;
else
{
build(a);
afisare(a);k=n-1;}
}
}