В массиве a получаем все возможные комбинации 0 и 1 (как в n-разрядном двоичном числе). Для каждой полученной комбинации печатаем индексы элементов, которые = 1.
var n,i:integer;
a:array of integer;
begin
write('n = ');
readln(n);
SetLength(a,n+1);
while a[n]<>1 do
begin
i:=0;
while (a[i]=1) do begin
a[i]:=0;
i:=i+1;
end;
a[i]:=1;
For i:=0 to n-1 do
if a[i]=1 then write(i+1);
writeln;
end;
end.
Пример:
n = 3
1
2
12
3
13
23
123