Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Конечно слабо :-) 10.06.03 17:38 Число просмотров: 1052
Автор: amirul <Serge> Статус: The Elderman Отредактировано 10.06.03 17:42 Количество правок: 1
|
> Существует задача: найти количество способов разбиения > натурального числа в сумму натуральных чисел. Есть таблицы, > дающие такие данные для чисел, меньших 600. > Например для числа 4 есть 5 способов: > 4=3+1=2+2=2+1+1=1+1+1. > Но с помощью компьютера можно найти, сколькими способами > можно представить в виде суммы натуральных чисел число, > например, 1001. Мы это сделали даже на старенькой "двойке". > А сможете ли Вы это сделать? Первое, что приходит в голову - рекурсия:
1. Инициализируем некую переменную нулем
2. Увеличиваем <некую переменную> :-) на 1
3. Если (1001 - <некая переменная>) <= 0 - подъем (при равенстве нулю - найден один из вариантов)
4. К пункту 2
Слегка требователен к стеку, но оптимальный по количеству и понятности кода (пара десятков строк). Производит полный перебор всех вариантов. Если необходимо только количество вариантов - лучше пользоваться формулами типа тех, что приведены ниже.
ЗЫ: Вот только не понимаю в чем крутость. У нас такие задачи на лабораторных задавали (только там была такая вариация: "Вывести все возможные разбиения строки на подстроки", что в принципе не меняет сути, так как в данном случае находятся просто длины всех подстрок)
|
|
|