|
|
Регистрация | << Правила форума >> | 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; |