Кодинг
★ Рубрика: Кодинг
★ Тема: Алгоритмы

Печать всех последовательностей чисел

Задача. Написать программу, которая печатает по одному разу все последовательности длины n, составленные из чисел 1..k (их количество равно k в степени n).
Решение. Программа будет оперировать с массивом a[1]..a[n] и числом t. Рекурсивная процедура generate печатает все последовательности, начинающиеся на a[1]..a[t]; после ее окончания t имеет то же значение, что и в начале:
procedure generate;
 | var i,j : integer;
 begin
 | if t = n then begin
 | | for i:=1 to n do begin
 | | | write(a[i]);
 | | end;
 | | writeln;
 | end else begin {t < n}
 | | for j:=1 to k do begin
 | | | t:=t+1;
 | | | a[t]:=j;
 | | | generate;
 | | | t:=t-1;
 | | end;
 | end;
 end;
Основная программа теперь состоит из двух операторов:
t:=0; generate;
 Похожие публикации: Алгоритмы

Войти и комментировать [ Вход | Регистрация ]