Перечислить все разбиения N на целые

Компьютеры программирование обучение Образование pascal

Перечислить все разбиения N на целые положительные слагаемые Пример: N=4, разбиения: 1+1+1+1, 2+1+1, 2+2, 3+1, 4.First = (1,1,...,1) - N единиц Last = (N)Чтобы разбиения не повторялись, договоримся перечислять слагаемые в невозрастающем порядке. Сказать, сколько их будет всего, не так-то просто (см.следующий пункт). Для составления алгоритма Next зададимся тем же вопросом: в каком случае i-ый член разбиения можно увеличить, не меняя предыдущих?

Примечание:
написать программу

Примечание:
которая на вход принимает N и на выходе печатает разбиения
Ответы:
В чем задача-то? Вычислить кол-во разбиений в общем случае, или написать программу, которая на вход принимает N и на выходе печатает разбиения?
var
 pred: array[1..10] of integer;
 c: integer;
 i:integer;
begin
 c:=5;
 pred[1]:=c;
 repeat
   for i:=10 downto 2 do
   begin
     if (pred[i-1]>1) then
     begin
       pred[i]:=pred[i]+1;
       pred[i-1]:=pred[i-1]-1;
       break;
     end;


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.