Помогите с перебором на Паскале
Рад всех приветствовать!
Столкнулся с такой задачей. Есть одномерный массив m, который формируется определенным образом.
m = [8, 4, 4, 2, 2, 2, 2]. Дальше мы задаем параметр x от 1 до n-4 (n = 8). Задача сводится к перебору всех возможных сочетаний из элементов массива по x.
Например, x=2. Перебор осуществляем по два элемента. Получаем: (8,4) (8,4) (4,4) (4,2) (2,2) (8,2) и т.д. всего 21 сочетание. Это бином Ньютона. Программа должна складывать числа из каждого сочетания и формировать новый одномерный массив размером 1x21. 8+4=12, 8+4=12, 4+4=8 и т.д.
Например, x=3. Перебор по три элемента. Получаем (8,4,4) (8,4,2) (8,2,2) и т.д. всего 35 сочетаний. Дальше складываем: 8+4+4=16, 8+4+2=14 и т.д. Формируем из этих чисел массив размером 1x35.
Исходник:
Рад всех приветствовать!
Столкнулся с такой задачей. Есть одномерный массив m, который формируется определенным образом.
m = [8, 4, 4, 2, 2, 2, 2]. Дальше мы задаем параметр x от 1 до n-4 (n = 8). Задача сводится к перебору всех возможных сочетаний из элементов массива по x.
Например, x=2. Перебор осуществляем по два элемента. Получаем: (8,4) (8,4) (4,4) (4,2) (2,2) (8,2) и т.д. всего 21 сочетание. Это бином Ньютона. Программа должна складывать числа из каждого сочетания и формировать новый одномерный массив размером 1x21. 8+4=12, 8+4=12, 4+4=8 и т.д.
Например, x=3. Перебор по три элемента. Получаем (8,4,4) (8,4,2) (8,2,2) и т.д. всего 35 сочетаний. Дальше складываем: 8+4+4=16, 8+4+2=14 и т.д. Формируем из этих чисел массив размером 1x35.
Исходник:
Код:
VAR m: array of real;
a,b,n,y,i,j,x: integer;
BEGIN
a:=2; b:=2; n:=a*b+a+2; y:=2*a*b;
Write('x= ');
ReadLn(x);
Setlength(m,n-1);
// Формируем массив
j:=1;
m[j]:=8;
for i:=1 to a do
begin
j:=j+1;
m[j]:=(1/a)*y;
end;
for i:=1 to a*b do
begin
j:=j+1;
m[j]:=(1/(a*b))*y;
end;
// Выводим массив
for j:=1 to n-1 do write(m[j]:3:0);
WriteLn;
ReadLn
END.