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

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


Бывалый
***

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

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


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


Гость






Заодно попробуй вот это (набирал прямо здесь, так что может чего где забыл, поправь если что) :

var
q : integer;
n : integer;

arr : array[1 .. 10] of integer;

procedure p(start, count : integer);
var i, s : integer;
begin
if count > q then
begin
s := 0;
for i := 1 to q do s := s + arr[i];
if s = n then
begin
for i := 1 to q do write(arr[i]:3);
writeln;
end;
end
else
begin
for i := start + 1 to n do // Вот основная идея: чтоб решения и слагаемые не повторялись
begin
arr[count] := i;
p(arr[count], count + 1); // рекурсия присутствует
end;
end;
end;

begin
n := 9;
q := 3;
p(0, 1);
end.
 К началу страницы 
+ Ответить 

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


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

 



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