Цель задачи состоит в том, что с учетом ряда цифр, найдите
наименьшее (строго положительное) число, которое вы не можете < /strong>, используя каждый
numerals в ostnes. Эти цифры 7129045863 , первое число, которое вы не можете сделать, составляет 11 . Для этих цифр 55 Первый (положительный) номер
, который вы не можете сделать,-это 1 .
Я реализовал следующий алгоритм:
Код: Выделить всё
digits = list(map(int, input()))
# counting the digits into a dictionary
count_0 = 0
dict = {1:0, 2:0, 3:0, 4:0, 5:0, 6:0, 7:0, 8:0, 9:0}
for digit in digits:
if digit != 0:
dict[digit] += 1
else:
count_0 += 1
# finding the smallest digit which has the smallest count
min_key = 1
min_val = dict[1]
for digit, val in dict.items():
if val < min_val:
min_val = val
min_key = digit
if val == min_val and digit < min_key:
min_key = digit
# printing the result
if count_0 + 1
Подробнее здесь: [url]https://stackoverflow.com/questions/79605867/is-this-a-greedy-algorithm-and-if-so-why[/url]