Pagini recente » Cod sursa (job #1111496) | Cod sursa (job #3217057) | Cod sursa (job #2219016) | Cod sursa (job #3139335) | Cod sursa (job #530422)
Cod sursa(job #530422)
#include<cstdio>
using namespace std;
int n,P[10],i,k,poz,aux;
void read(),solve();
int main()
{
read();
solve();
return 0;
}
void read()
{
freopen("permutari.in","r",stdin);
freopen("permutari.out","w",stdout);
scanf("%d",&n);
}
void solve()
{
for(i=1;i<=n;i++){P[i]=i;printf("%d ",i);}
printf("\n");
poz=n;
while(poz)
{
poz=n;
while(P[poz]<P[poz-1] && poz>1)poz--;
poz--;
if(poz)
{
for(k=n;;k--)if(P[k]>P[poz]){aux=P[poz];P[poz]=P[k];P[k]=aux;break;}//interschimb P[poz] cu primul din coada mai mare
for(i=1;i<=poz;i++)printf("%d ",P[i]);//afisez pana la poz
for(i=poz+1,k=1;i<=n;i++,k++)
{
if(k<=(n-poz)/2){aux=P[i];P[i]=P[n-k+1];P[n-k+1]=aux;}//inverseaza
printf("%d ",P[i]);
}
printf("\n");
}
}
}