|
Комбинаторика. Сколькими способами можно пройти лестницу? | ☑ | ||
---|---|---|---|---|
0
GANR
02.07.12
✎
12:13
|
Найти количество способов прохождения 30-ступенчатой лестницы, если можно шагать
- на следующую ступеньку - через 1 ступеньку - через 2 ступеньки |
|||
1
Ненавижу 1С
гуру
02.07.12
✎
12:15
|
Пусть P(N) - число способов прохода N-ступенчатой лестницы
Тогда P(N) = P(N-1)+P(N-2)+P(N-3) P(1)=1 P(2)=2 P(3)=4 |
|||
2
Противный
02.07.12
✎
12:15
|
два впеед, один назад... учитывать?
|
|||
3
Eugene_life
02.07.12
✎
12:16
|
(0) Бери цикл от 0 до 30, не ошибешься
|
|||
4
Противный
02.07.12
✎
12:16
|
вперед...
|
|||
5
GANR
02.07.12
✎
12:18
|
Только вперёд(2)
|
|||
6
Ненавижу 1С
гуру
02.07.12
✎
12:55
|
||||
7
GANR
02.07.12
✎
14:46
|
ап
|
|||
8
aleks-id
02.07.12
✎
14:47
|
30 в кубе не?
|
|||
9
Ненавижу 1С
гуру
02.07.12
✎
14:48
|
(7) че ап? че тебе еще рассказать то?
|
|||
10
Ненавижу 1С
гуру
02.07.12
✎
14:49
|
Excel говорит 53798080
|
|||
11
GANR
02.07.12
✎
14:51
|
(9) Верно. Хорошо-бы ход решения до косточки развинтить.
|
|||
12
acsent
02.07.12
✎
14:52
|
1. вычисляем кол-во ступенек которые можно пропустить.
Всего вариантов - сумма всех сочетаний без повторов из колва ступенек по количество пропусков |
|||
13
acsent
02.07.12
✎
14:53
|
3. вычесть пропуски стоящие рядом
|
|||
14
Ненавижу 1С
гуру
02.07.12
✎
14:53
|
(11) нудятина, анализируем последний ход и обнаруживаем рекурсию
|
|||
15
Vakhrin
02.07.12
✎
14:54
|
3 способа:
- на следующую ступеньку - через 1 ступеньку - через 2 ступеньки |
|||
16
Vladal
02.07.12
✎
15:00
|
(15) Ну а если первую - на одну, потом - через одну, потом следующую, потом - через две...
|
|||
17
Deni7
02.07.12
✎
15:04
|
(9) Тут видимо надо решение в замкнутой форме.
|
|||
18
Vladal
02.07.12
✎
15:04
|
Имеем количество вариантов, как можно выразить сумму 30 из чисел 1, 2 и 3.
|
|||
19
Deni7
02.07.12
✎
15:06
|
1С:Ркурсия
Процедура КнопкаВыполнитьНажатие(Кнопка) Для А = 1 По 30 Цикл Ф = Расчет(А); Сообщить(""+А+" "+Ф); ОбработкаПрерыванияПользователя(); КонецЦикла; КонецПроцедуры Функция Расчет(х) Если х = 1 Тогда Возврат 1; ИначеЕсли х = 2 Тогда Возврат 2; ИначеЕсли х = 3 Тогда Возврат 4; Иначе Возврат Расчет(х-1)+Расчет(х-2)+Расчет(х-3); КонецЕсли; КонецФункции |
|||
20
GANR
02.07.12
✎
15:08
|
Хорошо. Не перевелись среди 1С-чиков математики. :-)
|
|||
21
чувак
02.07.12
✎
15:20
|
(20) Не только математика. Тут есть все.
В соседней ветке обсуждают принципы взаимодействия кварково-глюконного взаимодествия через призму системы мультивселенная-омниверс. |
|||
22
Михаил Козлов
02.07.12
✎
20:24
|
(14) Если искать решение реккурентного уравнения в виде P(N) = p^N (как это обычно и делают), то для p получается уравнение: p^3-p^2-p-1 = 0. К сожалению, по формуле Кардана получается громоздкое выражение. Численное значение "главного" члена, примерно, 1,84 - растет чуть медленнее степени двойки.
|
|||
23
GANR
02.07.12
✎
23:53
|
(22) С удовольствием попробую обобщить задачу и вывести что-то свое. Нельзя в математике мыслить формулами - чтобы в ней что-то открыть надо мыслить образами.
|
|||
24
GANR
04.07.12
✎
13:53
|
Выражение MathML {\sf C}_n^k={\sf C}_{n-1}^k+{\sf C}_{n-1}^{k-1}.
|
|||
25
GANR
07.07.12
✎
13:21
|
НЕ рациональное решение с просмотром промежуточных результатов:
&НаКлиенте Процедура ПереборСочетанийШагов(ВсегоСтупеней = 30) ШагиПо3 = 0; Счетчик = 0; Итого = 0; Пока ШагиПо3 * 3 <= 30 Цикл ШагиПо2 = 0; Пока ШагиПо3 * 3 + ШагиПо2 * 2 <= 30 Цикл ШагиПо1 = ВсегоСтупеней - (ШагиПо3 * 3 + ШагиПо2 * 2); Счетчик = Счетчик + 1; ЧислоШаговПо2По3 = ШагиПо2 + ШагиПо3; ЧислоСочетанийШаговПо2По3 = C(ЧислоШаговПо2По3, ШагиПо2); ЧислоШаговПо1По2По3 = ШагиПо1 + ШагиПо2 + ШагиПо3; ЧислоСочетанийШаговПо1 = C(ЧислоШаговПо1По2По3, ЧислоШаговПо2По3); ВсегоСочетаний123 = ЧислоСочетанийШаговПо1 * ЧислоСочетанийШаговПо2По3; Итого = Итого + ВсегоСочетаний123; Сообщить("" + Счетчик + ") Шагов по 3 - " + ШагиПо3 + ", по 2 - " + ШагиПо2 + ", по 1 - " + ШагиПо1 + ", перестановок - " + ВсегоСочетаний123); ШагиПо2 = ШагиПо2 + 1; КонецЦикла; ШагиПо3 = ШагиПо3 + 1; КонецЦикла; Сообщить(" |Лестницу можно пройти " + Итого + " способами"); КонецПроцедуры // функция подсчета сочетаний элементов // из N по k &НаКлиенте Функция C(N, k) Если N < k или k < 0 или N < 0 Тогда Возврат 0 КонецЕсли; Comb = 1; Для i = 1 По k Цикл Comb = Цел(Comb * (N - k + i) / i) КонецЦикла; Возврат Comb КонецФункции Ответ: Лестницу можно пройти 53798080 способами (такой-же, как и в (10)) |
|||
26
sda553
07.07.12
✎
13:39
|
wiki:Числа_трибоначчи
эта задача в своем общем случае не так то проста |
|||
27
GANR
07.07.12
✎
13:46
|
Представить её в уме, не глядя на стандартизированные алгоритмы, весьма непросто.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |