Pagini recente » Cod sursa (job #379951) | Cod sursa (job #1729590) | Cod sursa (job #1314921) | Cod sursa (job #502081) | Cod sursa (job #1017509)
#include <iostream>
#include <fstream>
#include <algorithm>
#define m 10
using namespace std;
ifstream f("permutari.in");
ofstream g("permutari.out");
int n,s[m],b[m];
void Initializare();
void Print();
void Permutari();
bool LargestCouple(int& k);
int LargestK(int k);
void Reverse(int k, int nn);
int main()
{
f>>n;
Permutari();
f.close();
g.close();
return 0;
}
void Permutari()
{
Initializare();
int k,mx;
bool ok;
for(bool ok=true;ok;)
{
Print();
ok=LargestCouple(k);
//g<<k<<'\n';
mx=LargestK(k);
// g<<mx<<'\n';
swap(s[mx],s[k]);
//Print();
Reverse(k+1,n-1);
}
}
bool LargestCouple(int& k)
{bool ok=false;
for(int i=0;i<n;++i)
if(s[i]<s[i+1]) k=i, ok=true;
return ok;
}
int LargestK(int k)
{
for(int i=n-1;i>0;--i)
if(s[i]>s[k]) return i;
}
void Reverse(int k,int nn)
{
for(int i=k,j=nn;i<(k+nn)/2+1;++i,--j)
swap(s[i],s[j]);
}
void Initializare()
{
for(int i=0;i<n;++i)
s[i]=i;
}
void Print()
{
for(int i=0;i<n;++i)
g<<s[i]+1<<' ';
g<<'\n';
}