![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Всем доброго времени суток!
Имеется массив чисел: 1, 2, 3, 4, 5 Помогите найти алгоритм перебора всех сумм. Например, что-бы получилось 1 + 2 1 + 3 1 + 4 1 + 5 1 + 2 + 3 1 + 2 + 4 1 + 2 + 5 и т. д. затем 2 + 3 2 + 4 и т. д. 2 + 3 + 4 2 + 3 + 5 и т. д. Пока додумался только до такого, но это далеко от того, что нужно: Код:
procedure Generator(S: String; Level: Int32; sl: TStrings);
var
i, j: Int32;
begin
for i := Level to sl.Count - 1 do
begin
Form1.Memo2.Lines.Add(S + '+' + sl[i]);
end;
if Level < sl.Count - 1 then
Generator(S + '+' + sl[Level], Level + 1, sl);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Generator('', 0, Memo1.Lines);
end; |
|
#2
|
|||
|
|||
|
попробуй как-то так:
Код:
procedure CreateSums(A : Array Of Integer);
var
I, J : Integer;
H, S : String;
begin
Memo1.Lines.Clear;
For I := Low(A) To High(A)-1 Do
Begin
H :='';
For J := Low(A) To I Do H := H + IntToStr(A[J]) + '+';
For J := I+1 To High(A) Do
Begin
S := H + IntToStr(A[J]);
Memo1.Lines.Add(S);
End;
End;
end; |