Надо методом перебора. Я сделал, только они повторяются: 1 3 5 - 5 3 1 Может у вас есть алгоритм для этой задачи? Я думал сохранить результаты в массиве, т.е если числа вектора не повторяются с теми что из массива то добавляем в массив, но это не эфективно, думаю есть более простой метод. Спасибо.
volvo, а почему ты счел возможным совершенно проигнорировать мой пост (Разбиение числа на слагаемые) и даже не извиниться?.. Мне кажется, это не принято.
По данной мной ссылке содержится решение, которое требует минимальных изменений (сделать вывод только в случае нужного числа слагаемых).
-1
Добавлено через 7 мин.
Цитата(volvo @ 18.04.2011 16:26)
Алгоритм ты озвучил сам: перебор.
Перебор - это класс алгоритмов, а не алгоритм.
Вот мое модифицированное решение:
const m=1000; var a: array[1..m]of integer; k,n,q: integer;
procedure Split(j,n: integer); var i: integer; begin if (n=0)and(k=q) then begin for i:=1 to k do Write(a[i]:4); WriteLn end else for i:=j to n do begin Inc(k); a[k]:=i; Split(i+1,n-i); Dec(k) end end;