55 / 40 / 18
Регистрация: 16.12.2019
Сообщений: 149
|
|
1 | |
Количество разбиений строки на группы различной длины16.12.2019, 16:43. Показов 2891. Ответов 10
Метки нет (Все метки)
Есть строка символов длиной n. Она может быть разбита разделителем на группы длиной m, где 1 <= m <= 2. Например, для строки 'aaa': 'a,a,a' или 'aa,a' или 'a,aa'.
- Прошу подсказать формулу расчета количества разбиений. Заранее спасибо.
0
|
16.12.2019, 16:43 | |
Ответы с готовыми решениями:
10
Даны три строки различной длины. Напечатать ту из них, где больше гласных латинских букв Удалить из строки группы одинаковых символов заданной длины Инициализировать 3 переменных различной длины Вычитание n-разрядных целых чисел различной длины. |
16.12.2019, 18:19 | 2 |
Сообщение было отмечено udeep как решение
Решение
Судя по примеру, на группы длиной от 1 до m, где m - фиксированное число, например, m=2.
Добавлено через 21 минуту k - количество групп. - округление вверх.
1
|
55 / 40 / 18
Регистрация: 16.12.2019
Сообщений: 149
|
|
16.12.2019, 19:53 [ТС] | 3 |
Спасибо. - Пытаюсь осознать...
0
|
55 / 40 / 18
Регистрация: 16.12.2019
Сообщений: 149
|
||||||
17.12.2019, 09:46 [ТС] | 4 | |||||
Что-то не так...
Кликните здесь для просмотра всего текста
Результат: -1.0
0
|
17.12.2019, 15:21 | 5 |
Сообщение было отмечено udeep как решение
Решение
udeep, исправил формулу - верхний индекс по i и нижний индекс во 2-м биномильном коэффициенте. Для ваших значений параметров получается - слишком большое число для отображения в целом формате.
Проверьте для меньших n. Например, для n=10 должно выйти 89 вариантов (m=2, как у вас).
0
|
55 / 40 / 18
Регистрация: 16.12.2019
Сообщений: 149
|
||||||
17.12.2019, 16:24 [ТС] | 6 | |||||
Для n=10 результат почему-то получается -805.0
Во втором цикле сделал округление в меньшую сторону, т.к. иначе будет ошибка "factorial() not defined for negative values". Понятно что отрицательное значение дает: "-1**i". - Но не ясно, где ошибка в коде или в формуле... Кликните здесь для просмотра всего текста
PS. Если есть "правильный" код на любом языке программирования. - Я смогу понять.
0
|
17.12.2019, 16:28 | 7 | |||||
Сообщение было отмечено udeep как решение
Решение
VBA в Экселе:
Кликните здесь для просмотра всего текста
1
|
55 / 40 / 18
Регистрация: 16.12.2019
Сообщений: 149
|
||||||
17.12.2019, 17:56 [ТС] | 8 | |||||
Огромное спасибо! Разобрался. - Ступил и не взял "-1" в скобки в выражении "-1**i" и при вычислении "BinomKoef" надо применять целочисленное деление.
Замечу, что реализация функция BinomKoef дает ошибку (начиная с n = 20) по сравнению с: "factorial(n) // factorial(n - k) // factorial(k)" (BinomKoef1) Кликните здесь для просмотра всего текста
1, 2: 1 2, 2: 2.0 3, 2: 3.0 4, 2: 5.0 5, 2: 8.0 10, 2: 89.0 20, 2: 10945.99999999996 Ошибка: 4.001776687800884e-11 70, 2: 308061518514577.0 Ошибка: 2655552.0
0
|
17.12.2019, 18:54 | 9 |
udeep, в вашей 6-й строке диапазон по i должен быть до k, а не до k+1 - должно выйти произведение , а в вашей версии из-за строки 6 выходит
В строке 15 обратно верхняя граница по переменной k до n+1 вместо n. Я не знаю Питон, может, верхняя граница не считается? То есть цикл на Питоне for k in range(1, 10): будет вычисляться 10 раз (как я это понимаю) или 9 раз?
0
|
55 / 40 / 18
Регистрация: 16.12.2019
Сообщений: 149
|
|
17.12.2019, 23:41 [ТС] | 10 |
На Питоне for k in range(1, 10): будет вычисляться 9 раз. - Верхняя граница range() всегда не входит в диапазон.
Добавлено через 4 часа 18 минут Не по теме:
1
|
55 / 40 / 18
Регистрация: 16.12.2019
Сообщений: 149
|
||||||
18.12.2019, 09:04 [ТС] | 11 | |||||
Наверное, самый оптимальный вариант реализации функции:
0
|
18.12.2019, 09:04 | |
18.12.2019, 09:04 | |
Помогаю со студенческими работами здесь
11
Лексикографическая Сортировка Цепочек Последовательностей Различной Длины TClient + TServer + отправление и получение record различной длины Выравнивание столбцов в файле, содержащем числа различной длины Как сделать генератор паролей различной длины от 3 и более в заданном интервале Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |