Pagini recente » Cod sursa (job #1580826) | Cod sursa (job #745535) | Cod sursa (job #2841555) | Cod sursa (job #3124781) | Cod sursa (job #332814)
Cod sursa(job #332814)
#include <fstream.h>
using namespace std;
ofstream out("permutari.out");
ifstream in("permutari.in");
void genpermutare(int n)
{
int k, t, aux;
int p[n];
for(int i=1; i<=n; i++){ p[i]=i; out<<p[i]<<" "; if (i==n) out<<endl;}
while(1)
{
k=n-1;
while(p[k]>p[k+1]) k--; if(k<1)break; //1.gasim primul p[k]<p[k+1], daca nu este suntem la ultima permutare
t=n;
while(p[t]<p[k]) t--; //2.cautam primul t>k
aux = p[t]; p[t]=p[k]; p[k]=aux; //3.interschimb t cu k
for(int i=0; i<(n-k)/2; i++) {aux=p[k+1+i]; p[k+1+i]=p[n-i]; p[n-i]=aux;} //4.fuck this part! oglindesc p[k+1]...p[n]
for(int i=1; i<=n; i++) {out<<p[i]<<" "; if (i==n) out<<endl;}
}
}
int main()
{ int a;
in>>a;
genpermutare(a);
return 0;
}