Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2008, 15:35   #1
anGeee
Пользователь
 
Аватар для anGeee
 
Регистрация: 18.11.2008
Сообщений: 94
По умолчанию Все возможные слагаемые

Помогите пожалуйста написать процедурку: дано число (не больше двухзначного) и дано количество слагаемых, на которые это число необходимо разбить. Нужно найти все возможные такие комбинации слагаемых. Причем, например комбинации 1 2 3 и 1 3 2 являются одинаковыми. Желательно итеративный алгоритм.

Последний раз редактировалось anGeee; 03.12.2008 в 15:41.
anGeee вне форума Ответить с цитированием
Старый 03.12.2008, 18:32   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

неоптимально, но просто
разбиение на три слагаемых

Код:
for i1:=1 to n do
  for i2:=i1 to n do
    for i3:=i2 to n do
      if i1+i2+i3 =n then showmessage(format('%d + %d + %d =%d',[i1,i2,i3,n]);
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 03.12.2008, 18:37   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

прощу прощения
showmessage привычка к Delphi
надо заменить writeln или др. функцией вывода
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 03.12.2008, 18:56   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Код:
procedure writesum(rs: string; k, s, in: integer; n, kmax: integer);
var
  j: integer;
begin
  if k<kmax then 
     for j:=in to n do 
        writesum(format('%s + %d',[rs,j]), k+1, s+j, j, n, kmax)
  else if s=n then
     writeln(rs);
end;
исходный вызов writesum('',0,0,1, <чмсло>, <число слагаемых> );

P.S. тот же алгоритм, но в рекурсивной форме для произвольного чмсла слагаемых
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 03.12.2008 в 19:01.
evg_m вне форума Ответить с цитированием
Старый 04.12.2008, 20:22   #5
anGeee
Пользователь
 
Аватар для anGeee
 
Регистрация: 18.11.2008
Сообщений: 94
По умолчанию

to evg_m
Спасибо. Чуть позже разберу. И это... В паскале нет оператора format...
anGeee вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Все все о MainMenu Dr.Badnezz Win Api 0 20.09.2008 15:56
в начале все отрицательные, затем все положительные элементы в матрице motaro Паскаль, Turbo Pascal, PascalABC.NET 2 07.03.2008 19:16
Все тодже IF!!! MAKEDON Общие вопросы Delphi 6 23.12.2007 15:57
Разложение числа на слагаемые Oleg-vp Общие вопросы Delphi 5 30.10.2007 10:43
Delphi, рекурсия, как сделать все возможные N-ки чисел (сколько столбцов такая N-ка,в данном случае 3)? domik Помощь студентам 5 26.09.2007 16:43