Cod sursa(job #374612)

Utilizator juniorOvidiu Rosca junior Data 17 decembrie 2009 15:25:49
Problema Combinari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
//80 p
#include <fstream>

using namespace std;

int n, a[19], k;
ifstream fi("combinari.in");
ofstream fo("combinari.out");

// La fiecare apel se stabileste o valoare in sir.
void comb (int l) { // se va pune o valoare pe locul l
  int i, linf, lsup; // variabila locala, memorata separat pentru fiecare apel

  if (l <= k) { // conditie care "protejeaza"
    linf = a[l-1] + 1; lsup = n - k + l;
    for (i = linf; i <= lsup; i++) {  // i este valoarea care se pune pe locul l
      a[l] = i;
      comb (l + 1); // la pasul urmator vom pune valoare pe locul l+1
    }
  }
  else {
    for (i = 1; i <= k; i++)
      fo << a[i] << ' ';
    fo << '\n';
  }
}

int main () {
  fi >> n >> k;
  comb (1); // mai intai punem o valoare pe locul 1 din n-uplu
  return 0;
}
/*
 l   max
--------
 k    n
k-1  n-1       max-l = n-k => max = n-k+l
k-2  n-2

*/