Pagini recente » Cod sursa (job #188685) | Cod sursa (job #290920) | Cod sursa (job #447917) | Cod sursa (job #2723306) | Cod sursa (job #1439187)
#include <fstream>
#include <algorithm>
using namespace std;
int a[10], i, is, id, n, nr;
int p, poz, mn, poz2;
ifstream fin("permutari.in");
ofstream fout("permutari.out");
void afisare ()
{
int i;
for (i = 1; i <= n; i++)
fout << a[i] << ' ';
fout << '\n';
}
int main ()
{
fin >> n;
p=1;
for (i = 1; i <= n; i++)
{
p*=i;
a[i] = i;
}
afisare();
nr=1;
while (nr<p)
{
nr++;
for (i=n; i>=2; i--)
{
if (a[i]>a[i-1])
{
poz=i-1;
break;
}
}
mn=n;
for (i=n; i>poz; i--)
{
if (a[i]>a[poz] && mn>=a[i])
{
mn=a[i];
poz2=i;
}
}
if (poz!=1)
{
swap(a[poz], a[poz2]);
sort(a+poz+1, a+n+1);
afisare();
}
else
{
a[1]++;
for (i=2; i<=n; i++)
if (a[1]>=i)
a[i]=i-1;
else
a[i]=i;
afisare();
}
}
fin.close();
fout.close();
return 0;
}