Pagini recente » Cod sursa (job #2535674) | Cod sursa (job #1872812) | Cod sursa (job #434356) | Cod sursa (job #2942281) | Cod sursa (job #1113073)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int fact(int a)
{
if(a == 1) return 1;
return fact(a-1)*a;
}
int main()
{
ifstream fin("permutari.in");
ofstream fout("permutari.out");
int n, min, k = 0;
fin>>n;
int arr[n], temp[n];
bool check[n];
for(int i=0; i< n; i++) arr[i] = i+1;
for(int i=0; i< n; i++) fout<<arr[i]<<" ";
fout<<endl;
for(int r = 0; r< fact(n)-1; r++)
{
for(int i= n-1; i > 0; i--)
{
if(arr[i] > arr[i-1])
{
k = 0;
for(int j = 0; j< n; j++) check[arr[j] - 1] = 0;
for(int j = 0; j< i; j++) check[arr[j] - 1] = 1;
for(int j = 0; j< n; j++) temp[j] = -1;
check[arr[i-1]-1] = 0;
min = arr[i];
for(int j = i; j< n; j++)
{
if(arr[j] < min && arr[j] > arr[i-1]) min = arr[j];
}
arr[i-1] = min;
for(int j = 0; j< i; j++) fout<<arr[j]<<" ";
check[min - 1] = 1;
for(int j = 0; j< n; j++)
{
if(check[j] == 0) {temp[k] = j+1;k++;}
}
sort(temp, temp + n-1);
for(int j =0; j< n; j++)
{
if(temp[j] != -1)
{
fout<<temp[j]<<" ";
arr[i] = temp[j];
i++;
}
}
fout<<endl;
break;
}
}
}
return 0;
}