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

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Разложение на слагаемые
Unconnected
сообщение 5.08.2010 1:07
Сообщение #1


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

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


Привет всем.

Точно помню, что такое было на форуме, но поиск по всяким сочетаниям ничего не дал( Нужно вывести все возможные разложения числа N на слагаемые, без повторений (3+2 и 2+3 - повтор). Я сделал рекурсией разложение на слагаемые, но с повторениями. Как их избежать, ума не приложу.

{$APPTYPE CONSOLE}

var n:byte;
m:array[1..40] of byte;

Procedure rec(k,l:integer);
var i:integer;
begin
if (k=n) and (l>1) then begin
for i:=1 to l-1 do write(m[i],'+');
writeln(m[l]);
end else begin
for i:=1 to n do begin
if k+i<=n then begin
m[l+1]:=i;
rec(k+i,l+1);
end else break;
end;
end;
end;

begin
fillchar(m,40*sizeof(byte),0);
assign(input,'input.txt');
read(n);
assign(output,'output.txt');
rec(0,0);
end.



N<=40, на 40 этот код оччень долго работает, я не дождался. Наверное, надо отсекать повторы ещё при разложении.

Сообщение отредактировано: Unconnected - 5.08.2010 1:38


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



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