Pagini recente » Cod sursa (job #356135) | Cod sursa (job #901646) | Cod sursa (job #1354800) | Cod sursa (job #160453) | Cod sursa (job #146996)
Cod sursa(job #146996)
#include<stdio.h>
using namespace std;
int p[100],n;
int i,j,k;
void afis()
{ for(int i=1;i<=n;i++)
printf("%ld ", p[i]);
printf("\n");
}
void next()
{ int aux;
for(i=n-1;i&&p[i]>p[i+1];i--);
if(!i) return; // Nu mai exista succesor
else
{ for(j=n;p[j]<p[i];j--); // Afla cel mai mic element mai mare decat p[i]
aux=p[j], p[j]=p[i], p[i]=aux; // p[i] se interschimba cu p[j]
for(j=i+1, k=n ; j<k; j++,k--) // inverseaza elementele de la i+1 la n
aux=p[j], p[j]=p[k], p[k]=aux;
afis();
next();
}
}
int main()
{
freopen("permutari.in", "r", stdin);
freopen("permutari.out", "w", stdout);
scanf("%ld", &n);
for(i=1;i<=n;i++) p[i]=i;
afis();
next();
return 0;
}