{Перебiр перестановок, розташувань, комбiнацiй} const n=5; {Загальна кiлькiсть елементiв} k=3; {по скiльки елементiв} var v,h: array[1..255] of byte; {масиви перестановок i гiпотез} i,j: byte; label NEXTi, NEXTh, FINISH; begin for j:= 1 to n do v[j]:=j; i:=0; NEXTi: inc(i); h[i]:=0; NEXTh: inc(h[i]); if h[i]>n+1-i then begin dec(i); if i=0 then goto FINISH; j:=v[h[i]]; v[h[i]]:=v[n+1-i]; v[n+1-i]:=j; goto NEXTh end; {Перевiрка h[i], якщо перебiр комбiнацiй} if v[h[i]]<=v[n-i+2] then goto NEXTh; {Запам'ятовування зроблено∙ гiпотези рiвня i} j:=v[h[i]]; v[h[i]]:=v[n+1-i]; v[n+1-i]:=j; if i