List all combinations of k-th class of n elements

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Category: KMP (Club of young programmers)

Author: Ľuboš Saloky
Program: Kombin.pas
File exe: Kombin.exe

List all combinations of k-th class of n elements.
{ kombin.pas                                                         }
{ Výpis všetkých kombinácií­ K-tej triedy z N prvkov.                 }
{                                                                    }
{ Datum:30.01.1996                              http://www.trsek.com }
 
program Vypis_vsetkych_kombinacii_Ktej_triedy_z_N_prvkov;
const n=6;k=3;
var x,y,z:integer;
    a:array[1..k] of byte;
begin
{ ----- algoritmus s n vnorenymi cyklami ----- }
  writeln;
  for x:=1 to n-2 do begin
    for y:=x+1 to n-1 do
      for z:=y+1 to n do write(x,' ',y,' ',z,'Âł');
    writeln;
  end;
{ ----- algoritmus pomocou pola ----- }
  writeln;
  for x:=1 to k do a[x]:=x;
  while a[1]<n-k+1 do begin
    for x:=1 to k do write(a[x],' ');
    write('Âł');
    if a[k]<n then Inc(a[k])
    else begin
      z:=k;
      while a[z]>=n-k+z do Dec(z);
      Inc(a[z]);
      for y:=z+1 to k do a[y]:=a[z]+y-z;
      writeln;
    end;
  end;
  for x:=1 to k do write(a[x],' ');
  write('Âł');
  writeln;
  readln;
end.