Cod sursa(job #1538950)

Utilizator mister_adyAdrian Catana mister_ady Data 30 noiembrie 2015 01:56:50
Problema Combinari Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include<fstream>
using namespace std;

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

int N, K, c[100];

void afisare()
{
  for (int i = 1 ; i <= K ; i++)
    g<<c[i]<<" ";
    g<<endl;  
}

int ok(int poz)
{
  if (poz > 1 && c[poz-1] >= c[poz])
    return 0;
  return 1;  
}

void back(int poz)
{
  int i;
  for (i = 1 ; i <= N ; i++)
  { 
    c[poz] = i; 
    // acum practic o sa verific daca e bine sa-l las asa;
    // adica daca numarul numarul de dinainte e mai mic strict pentru pozitie > 1
    if (ok(poz))
    {
    // daca e, atunci verific daca poz = K (am terminat permutarea, si merg mai departe, la urmatoarea permutare
    // lucrul asta se face automat din for, practic imi face prima pozitie mereu 1, 2, 3, etc
      if (poz == K)
        afisare();
      else
        back(poz + 1); 
    // daca nu e, atunci merg mai departe sa mi completez sirul 
    } 
  }    
}

int main()
{
  f>>N>>K;
  back(1);
  f.close();
  g.close();
  return 0;  
}