URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6059
[ Назад ]

Исходное сообщение
"алгоритм разложения на слагаемые"

Отправлено Melkiades , 05-Янв-07 18:57 
Добрый день!
Подскажите, как покороче запрограммировать такую задачу:

Вывести все представления натурального числа М суммой натуральных чисел
Перестановка слагаемых нового способа представления не дает
Ограничения 2<M<40.

Пример:
M = 5;
4+1
3+2
3+1+1
2+2+1
2+1+1+1
1+1+1+1+1


Содержание

Сообщения в этом обсуждении
"алгоритм разложения на слагаемые"
Отправлено ACCA , 06-Янв-07 09:22 
Попробуй отладить что-нибудь вроде:


void sums(int N, const char *prev) {
   char  string[MAX];

   for (int i=1; i< N/2; i++) {
           printf("%i + %i %s", i, N-i, prev);

           sprintf(string, "+ %i\n", i); sums(N-i, string);
           sprintf(string, "+ %i\n", N-i); sums(i, string);
           sums(i, " + "); sums(N-i, "\n");
   }
}


sums(N, "\n");


"алгоритм разложения на слагаемые"
Отправлено Melkiades , 09-Янв-07 19:50 
>Попробуй отладить что-нибудь вроде:
да, очень попахивает тем что нужно применять рекурсию....попробую..