Pagini recente » Cod sursa (job #1681255) | Cod sursa (job #2237719) | Cod sursa (job #1583557) | Cod sursa (job #284653) | Cod sursa (job #146865)
Cod sursa(job #146865)
#include<fstream>
using namespace std;
ifstream fin("permutari.in");
ofstream fout("permutari.out");
int p[100],n;
int i,j,k;
int afis()
{ for(i=1;i<=n;i++)
fout<<p[i]<<' ';
fout<<endl;
}
int next()
{ int aux;
for(i=n-1;i&&p[i]>p[i+1];i--);
if(!i) return 0; // 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()
{ fin>>n;
for(i=1;i<=n;i++)
p[i]=i;
afis();
next();
return 0;
}