Застрял в сложном анализе сложной программы

-6

На самом деле застрял сложный анализ этой проблемы. Учитывая цифры 0-9, нам нужно найти все числа максимальной длины k, цифры которых будут в порядке возрастания.

for example if k = 3 , numbers can be 0,00,000,01,02,03,04,.... 1,11,111,12,...

Таким образом, вопрос в основном состоит в том, что если повторения допускаются для цифр, сколько таких комбинаций можно найти все числа меньше size k (less than digit length k), так что цифры слева направо будут неубывающим порядком.

спросил(а) 2017-08-21T17:04:00+03:00 3 года, 1 месяц назад
0
69

Числа с не более чем k разрядами, которые слабо растут, находятся в 1 -1 соответствии с двоичными строками длиной k+10, с точностью до десяти 1. Число последовательных 0 непосредственно перед i м и 1 в двоичной строке - это число i цифр в исходном номере. Например, если k=7, то 001119 отображается на 00100011111111010 (2 нули, 3 единицы, 0 двух, 0 тройки,..., 0 восьмерки, 1 девять, 1 цифра слева, чтобы сделать число цифр до 7),

Эти двоичные строки легко подсчитать: там choose(k+10, 10)-1 из них (отсутствует, потому что пустое число запрещено). Это можно вычислить в O (1) арифметических операциях (на самом деле 10 дополнений, 18 умножений и одно деление).

ответил(а) 2017-08-21T18:14:00+03:00 3 года, 1 месяц назад
57

У меня нет достаточной репутации, поэтому я не могу ответить Павлу или Глобусу.

Выбор ответа на глобус (k + 9,9) не идеален, поскольку он учитывает только решения, в которых числа имеют ровно k цифр. Но исходные проблемы позволяют номерам с меньшим количеством цифр.

Paul answer choose (k + 10,10) также учитывает эти более короткие числа, но также позволяет номера с нулевыми цифрами. Скажем, k = 7, то следующая двоичная строка описывает число без цифр: 11111111110000000. Мы должны исключить это.

Таким образом, решение таково: выберите (k + 10,10) -1

ответил(а) 2017-08-21T20:42:00+03:00 3 года, 1 месяц назад
42

У меня недостаточно репутации, чтобы комментировать ответ Павла, поэтому я добавляю еще один ответ. Формула не choose(k+10, 10) как указано Павлом, она choose(k+9, 9).

Например, если мы имеем k=2, choose(2+10, 10) дадим нам 66, когда есть только 55 чисел, удовлетворяющих свойству.

Мы выбираем звезды и сепараторы, где разделители делят наши цифры на ведра от 0 до 9, а звезды сообщают нам, сколько цифр выбрать из ведра. (Eg **|**||*||||||* соответствует 001139)

Причиной этого является k+9 а не k+10: мы должны выбрать 9 разделителей между 10 цифрами, поэтому, когда у нас есть выбор для звезд, у нас есть только 9 вариантов для разделителей.

ответил(а) 2017-08-21T18:28:00+03:00 3 года, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема