Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Вот наводка 14.06.03 23:41 Число просмотров: 1008
Автор: GeneralAlex Статус: Незарегистрированный пользователь Отредактировано 14.06.03 23:45 Количество правок: 1
|
Сначала результаты для всех чисел от 11 до 20 для тестирования:
р(11)=56
р(12)=77
р(13)=101
р(14)=135
р(15)=176
р(16)=231
р(17)=297
р(18)=385
р(19)=490
р(20)=627
> Самое интересное начинается с 5 шага. Т.к. если выполнять > дальше вышеописанные действия, > то у нас бы получилось нечто вроде: 5) 3+4. Что не нам не > надо, т.к. такой вариант у нас > уже есть. Следовательно, поступаем таким образом: остаток = > первый эл-т - остаток, остаток > кладем на второе место и снова проверяем больше ли он эл-та > №1 ... короче получается сумма > заданных цифр (в данном примере 3) и + остальное что не > хватает. > В общем-то на первый взгляд алгоритм верен (как мне > кажется), и причем он правильно > считает все числа < 10 (дальше не проверял, т.к. след. > результат который я знаю точно - это > p(15)). Но вот дальше результаты не верны... что довольно > странно :) > Есть какие-нибудь идеи? Или хоть намекните в чем ошибка, > интересно же все-таки :)
Просто, когда получаешь 3+4, то вместо этого одного разложения программа должна учесть все разложения числа 4, с максимальным элементом не больше трёх. Т.е. менять местами слагаемые не надо.
Тогда для пяти будешь получать
1)5
2)4+1
3)3+2=3+1+1
4)2+3-не учитываешь, а вместо него 2+2+1=2+1+1+1
5)1+4 не учитываешь, а вместо него 1+1+1+1+1
Только это рекурсивный алгоритм и по нему терпения хватит разве что дойти до двухсот.
Как протестироватьрезультат.
|
|
|