Cod sursa(job #1801824)

Utilizator BAC_AndreiBejinariu Andrei Catalin BAC_Andrei Data 9 noiembrie 2016 17:12:35
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>

using namespace std;
ifstream f("permutari.in");
ofstream g("permutari.out");
int n ,i ,j, nfact ,p[15];
void Urmatoarea_permutare();
int main()
{
    f>>n;
    nfact=1;
    for(i=1;i<=n;i++)
        nfact*=i;
    for(i=1;i<=n;i++)
        p[i]=i;
    for(i=1;i<=nfact;i++)
    {
        for(j=1;j<=n;j++)
            g<<p[j]<<' ';
        g<<'\n';
        Urmatoarea_permutare();
    }
    return 0;
}
void Urmatoarea_permutare()
{
    int i,j;
    for(i=n;i>=1;i--)
        if(p[i]>p[i-1])
            break;
    if(i==1)
        return;
    for(j=n;j>=i;j--)
        if(p[j]>p[i-1])
            break;
    int aux=p[i-1];p[i-1]=p[j];p[j]=aux;
    for(j=n;j>i;i++,j--)
    {
        aux=p[i];p[i]=p[j];p[j]=aux;
    }
}