Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Как протестироватьрезультат. 14.06.03 23:25 Число просмотров: 957
Автор: dzen Статус: Незарегистрированный пользователь
|
Объясните мне, может быть я что-то не понимаю :) В общем тут дело такое. Я написал эту
программу для подсчета кол-ва результатов. На бумажке у меня получилось максимум разложить
число 10 (на другие не хватило терпения :). Поэтому посмотрев на листочек и поняв алгоритм,
я просто написал программу. Но как ни крути, а результаты выходят неверные...
Вот как я делаю: возьмем для примера число 7.
1) 7
2) 6+1
3) 5+2 = 5+1+1
4) 4+3 = 4+2+1 = 4+1+1+1
5) 3+3+1 = 3+2+2 = 3+2+1+1 = 3+1+1+1+1
6) 2+2+2+1 = 2+2+1+1+1 = 2+1+1+1+1+1 = 1+1+1+1+1+1+1
Все вроде бы просто. Берем первое число, отнимаем от него единицу, а остаток ставим после
знака "+", т.е. пусть n = 7, тогда: "остаток" = n - "число на 1 позиции". Дальше если
остаток != 1, то работаем с остатком (т.е. раскладываем его). Остаток я раскладываю так:
остаток-1, а на след.позицию ставим 1.
Самое интересное начинается с 5 шага. Т.к. если выполнять дальше вышеописанные действия,
то у нас бы получилось нечто вроде: 5) 3+4. Что не нам не надо, т.к. такой вариант у нас
уже есть. Следовательно, поступаем таким образом: остаток = первый эл-т - остаток, остаток
кладем на второе место и снова проверяем больше ли он эл-та №1 ... короче получается сумма
заданных цифр (в данном примере 3) и + остальное что не хватает.
В общем-то на первый взгляд алгоритм верен (как мне кажется), и причем он правильно
считает все числа < 10 (дальше не проверял, т.к. след. результат который я знаю точно - это
p(15)). Но вот дальше результаты не верны... что довольно странно :)
Есть какие-нибудь идеи? Или хоть намекните в чем ошибка, интересно же все-таки :)
|
|
|