void Podstav (int n)
{
std::cout << "Генерация всех перестановок в лексикографическом порядке:" << std::endl;
int i = 0,j = 0,tmp,min,nmi;
int* x=new int [n];
for(i = 0; i < n; i++)
x[i] = i+1;
while(true)
{
for(i = 0; i < n; i++)
std::cout<<x[i]<<" ";
std::cout<<std::endl;
for(i = n-2; i >= 0 && x[i+1] < x[i]; i--);
if(i==-1) break;
min = 100000;
nmi = i;
for(j = i+1; j < n; j++)
if(x[j] > x[i] && x[j] < min)
{
min = x[j];
nmi = j;
}
x[nmi] = x[i];
x[i] = min;
for(j = i+1; j <= (i+n)/2; j++)
{
tmp = x[j];
x[j]=x[i+n-j];
x[i+n-j]=tmp;
}
}
}