Конкурс на лучшее решение

1. CheBurator 2684 20.08.07 22:45 Сейчас в теме
чисто размяться...
Дано: кучка из N предметов
Задача: разбить N на все возможные кучки.
Пример: 3 предмета.
Решение
1. кучки = 3
2. кучки = 1+2
3. кучки = 1+1+1
...
задача - максимально быстрое и красивое решение...
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. defini 464 21.08.07 09:05 Сейчас в теме
3. Vitek 21.08.07 10:41 Сейчас в теме
defini Написал:
-------------------------------------------------------
> а стимул?

размять моск, чтоб совсем не протух от одноэса
4. Ворона 21.08.07 16:29 Сейчас в теме
а имеет значение номер кучки?
5. CheBurator 2684 21.08.07 19:42 Сейчас в теме
Нет, номер кучки значения не имеет
1+2 = 2+1
6. АлександрШ 22.08.07 17:40 Сейчас в теме
Очередная математическая фигня из разряда: какую бы это задачу посложнее придумать, чтобы ее решить.
7. poppy 22.08.07 20:09 Сейчас в теме
Такая задача решается с помощью рекурсии. Например:

Код
Процедура Рекурсия(КоличествоВсего, КоличествоТекущее, КоличествоНакопленное, Стр, Уровень)
   
   Если КоличествоВсего <= КоличествоНакопленное Тогда
      Сообщить(Строка(Уровень) + ". кучки = " + Стр);
      Возврат;
   КонецЕсли;
   
   ПределЦикла = Мин(КоличествоТекущее, КоличествоВсего - КоличествоНакопленное);
   Для ии = 1 По ПределЦикла Цикл
      Рекурсия(КоличествоВсего, ии, КоличествоНакопленное + ии, Стр + ?(Стр = "","", "+") + Строка(ии), Уровень + 1);
   КонецЦикла;
   
КонецПроцедуры

//*******************************************
Процедура Сформировать()
   
   Кол = 0;
   Если ВвестиЧисло(Кол,"",10,0,60) = 1 Тогда
      Рекурсия(Кол, Кол, 0, "", 0);
   КонецЕсли;
   
КонецПроцедуры
Показать полностью
8. CheBurator 2684 24.08.07 01:46 Сейчас в теме
странно.. работает... ;-)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот