1 | ||||||
Связь чисел Фибоначчи и числа "сочетаний"23.09.2016, 18:20. Показов 2473. Ответов 8
Метки нет (Все метки)
Чтобы понять о чем идет речь я приведу частный пример.
дано 5 натуральных чисел 1, 2, 3, 4, 5. составим из этих чисел следующие сочетания. Порядок строго соблюдается!! 1) 1, 2, 3, 4, 5 2) 12, 3, 4, 5 3) 1, 23, 4, 5 4) 1, 2, 34, 5 5) 1, 2, 3, 45 6) 1, 23, 45 7) 12, 3, 45 8) 12, 34, 5 Нужно составить программу, которая для произвольного числа N могла бы сосчитать число приведенных выше в качестве примера сочетаний. Алгоритм к моему удивлению алгоритм оказался прост, точно такой же (рекурсия) каким вычисляются числа Фибоначчи. то есть количество сочетаний (n)= Фибоначчи(n+1) Вопрос Как обобщить программу, чтобы она вычисляла количество любых сочетаний? то есть в нашем примере должны добавиться и такие сочетания 9) 123, 45 10) 12345 11) и так далее. Сколько их?
0
|
23.09.2016, 18:20 | |
Ответы с готовыми решениями:
8
Вычисление чисел Фибоначчи и номера числа Фибоначчи с накопителями Набрать с чисел Фибоначчи в интервале от 1 до 100, только просто числа, а также их порядковые номера в ряду Фибоначчи Набрать с чисел Фибоначчи в интервале от 1 до 100, только просто числа, а также их порядковые номера в ряду Фибоначчи Определить номер N числа Фибоначчи, при котором сумма N первых чисел Фибоначчи превышает заданное число М |
23.09.2016, 21:24 | 2 | |||||||||||||||
Сообщение было отмечено echs как решение
Решение
Задача имеет математическое (комбинаторное) решение:
в первом случае нужно поставить 4 запятых между 5ти чисел, количество вариантов вычисляем через сочетания - С(4,4) = 4!/4!/0! = 1 Далее, нужно поставить 3 запятых между пяти чисел, при этом имеется 4 места, куда можно поставить запятую, количество вариантов - С(4,3) = 4!/3!/1! = 4 и так далее общее количество вариантов: С(4,4) + С(4,3) + С(4,2) + С(4,1) + С(4,0) = 1+4+6+4+1 = 2^4 = 16 При этом не нужно вычислять сочетания, т.к. сумма всех сочетаний можно вычислить через степень двойки. Сами сочетания можно вычислить через факториалы либо треугольником Паскаля (но никак не числами Фибоначчи). Один из вариантов вычисления:
Проверка:
еще вариант:
1
|
24.09.2016, 16:58 | 4 |
Сообщение было отмечено echs как решение
Решение
Как раз, чтобы вычислять количество сочетаний, нужны знания в комбинаторике
Ошибка в том, что числа Фибоначчи и количество сочетаний из n по k Уточнение: в треугольнике Паскаля В коде второго поста под n подразумевается количество запятых, а не количество чисел
1
|
24.09.2016, 17:51 | 6 | ||||||||||
Сообщение было отмечено echs как решение
Решение
Программа, которая выводит все варианты расстановок запятых между числами
можно изменить значение n:
И еще один вариант, основан не на последовательном переборе сочетаний, а на бинарном разложении числа
1
|
24.09.2016, 19:00 | 8 |
Надеюсь это не про программу перевода десятичного числа в двоичную систему.
Т.к. ничего сложного и интересного в этом коде нет. Сам принцип решения простой: имеем 5 чисел, между ними можем поставить максимум 4 запятых, запятая стоит - 1, запятая не стоит - 0 Фактически имеем максимально возможное количество вариантов 2^4 = 16 перебираем все числа от 0 до 15, переводим их в двоичную систему и ставим или не ставим запятую в зависимости от последовательностей битов. Реализовать данный алгоритм очень просто, значительно сложнее и интереснее реализовать последовательный перебор сочетаний: 0 из 4, 1 из 4, 2 из 4, 3 из 4, 4 из 4
1
|
24.09.2016, 19:34 [ТС] | 9 |
m-ch
Вы понимаете, дело вовсе не в коде. Код действительно прост. Дело в том, что мы (многие из нас) часто ищем сложное (хотя и очевидное) решение и упускаем из виду совсем простое. Как будто его и вовсе не существует. Спасибо вам от меня и тех, кто заглянет в эту тему. Уверен, они будут с благодарностью вспоминать ваши программы! а я? - я только учусь на ваших программах...
0
|
24.09.2016, 19:34 | |
24.09.2016, 19:34 | |
Помогаю со студенческими работами здесь
9
Вычислить массив чисел из первых 16 элементов числа чисел Фибоначчи в виде квадратной матрицы В файле записана непустая последовательность целых чисел, являющихся числами Фибоначчи. Приписать еще n чисел Фибоначчи Представить натуральное число в виде суммы чисел Фибоначчи так, чтобы в сумме не было соседних чисел Фибоначчи В массиве чисел определить числа Фибоначчи Найти числа Фибоначчи в заданной последовательности чисел Проверка принадлежности числа к ряду чисел Фибоначчи Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |