Cod sursa(job #555894)

Utilizator ucc_5Usurelu Catalin ucc_5 Data 15 martie 2011 20:36:24
Problema Submultimi Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>
#define nmax 18
using namespace std;

ifstream f("submultimi.in");
ofstream g("submultimi.out");

int s[nmax],uz[nmax],n;

void citire ()
{
  f>>n;
  f.close ();
}

void afisare (int k)
{
  for (int i=1; i<=k; i++)
    g<<s[i]<<" ";
  g<<'\n';
}

bool verif (int k, int i)
{
  if (uz[i]) return false;
  if (i<s[k-1] && k-1>=1)  //elementul de pus (i) e mai mic ca cel anterior din stiva
      return false ;
  return true;
}

void back (int k)
{
  if (k-2==n) return;
  if (k>=2) afisare (k-1);
  for (int i=1; i<=n; i++)
    if (verif(k,i))
    {
      uz[i]=1;
      s[k]=i;
      back (k+1);
      uz[i]=0;
    }
}


int main ()
{
  citire ();
  back (1);
  g.close (); return 0;
}