Cod sursa(job #332919)

Utilizator LeocruxRadu Romaniuc Leocrux Data 20 iulie 2009 23:39:03
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#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<<"\n";}
   
   while(1)
   {
          k=n-1;
          while(p[k]>p[k+1]) k--; if(k<1)break;
          t=n;
          while(p[t]<p[k]) t--; 
          aux = p[t]; p[t]=p[k]; p[k]=aux; 
          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;}
          for(int i=1; i<=n; i++) {out<<p[i]<<" "; if (i==n) out<<"\n";}
   }               
    
}

int main()
{   int a;
    in>>a;
    genpermutare(a);
    out.close();
    in.close();
    return 0;
}