IPB
ЛогинПароль:

> Разбиение числа на слагаемые, Надо разбить число N на суму из K слагаемых.
DarkWishmaster
сообщение 17.04.2011 22:14
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 168
Пол: Мужской

Репутация: -  3  +


Надо методом перебора. Я сделал, только они повторяются:
1 3 5 - 5 3 1
Может у вас есть алгоритм для этой задачи?
Я думал сохранить результаты в массиве, т.е если числа вектора не повторяются с теми что из массива то добавляем в массив, но это не эфективно, думаю есть более простой метод.
Спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 18.04.2011 15:26
Сообщение #2


Гость






Цитата
Может у вас есть алгоритм для этой задачи?
Алгоритм ты озвучил сам: перебор.

Есть реализация: числа, дающие в сумме заданное число
Повторений не наблюдается...
 К началу страницы 
+ Ответить 
Lapp
сообщение 19.04.2011 4:11
Сообщение #3


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(volvo @ 18.04.2011 16:26) *
Алгоритм ты озвучил сам: перебор.

Есть реализация: числа, дающие в сумме заданное число
Повторений не наблюдается...
volvo, а почему ты счел возможным совершенно проигнорировать мой пост (Разбиение числа на слагаемые) и даже не извиниться?.. blink.gif Мне кажется, это не принято.

По данной мной ссылке содержится решение, которое требует минимальных изменений (сделать вывод только в случае нужного числа слагаемых).

-1 norespect.gif

Добавлено через 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;

begin
Write('n = ');
ReadLn(n);
Write('q = ');
ReadLn(q);
k:=0;
Split(1,n);
ReadLn
end.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 28.04.2024 10:32
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"