Скажите, что у вас есть список всех n-значных чисел, удовлетворяющих определенному произвольному условию. Теперь вы хотите выбрать один набор из k цифр для каждой из n цифр, которые могут быть использованы для создания наибольшего числа n-значных чисел в вашем списке. Таким образом, общее число перестановок будет k^n.Выбор n наборов целых чисел, которые максимизируют число n-значных перестановок, удовлетворяющих произвольному условию
В качестве альтернативы вместо того, чтобы пытаться создать максимально возможное количество перестановок, удовлетворяющих условию, как бы вы максимизировали соотношение перестановок, которые удовлетворяют условию перестановок, которые этого не делают.
Я пытался решить эту проблему, и я просто не могу придумать решение очень легко, это не подход грубой силы. Что мне не хватает?
EDIT: вот пример того, что я имею в виду. Пусть n = 2 и k = 4, то есть я хочу, чтобы программа находила два списка, каждый из которых содержит 4 цифры. Объединив одну цифру из первого списка с одной цифрой из второго списка, вы можете создать двузначный номер. Например, пусть list1 = {0,1,4,7} и list2 = {0,2,3,8}. Набор двухзначных чисел, которые я могу создать с этими двумя списками, - {00,02,03,08,10,12,13,18,40,42,43,48,70,72,73,78}.
Теперь у меня есть произвольное условие, которое проверяется некоторой внешней функцией, скажем, в этом случае это то, является ли двузначное число простым. Для перечисленных выше списков подмножество двухзначных чисел, которые я могу создать, удовлетворяющих этому условию, {02,03,13,43,73}.
У меня есть две отдельные цели:
Написать программу, которая может определить, какие цифры в list1 и list2 произведет наибольший возможный набор двузначных чисел, удовлетворяющих уравнению мое. Например, если я изменяю list2, так что теперь это {1,3,7,9}, тогда набор двузначных простых чисел, которые я могу создать, становится {01,03,07,11,13,17,19,41, 43,47,71,73,79}. Таким образом, в этом случае (при условии, что я прав) число равно 13.
Напишите программу, которая может определить, какие цифры в списке1 и list2 будут производить набор двузначных чисел с наибольшим соотношением элементов, которые удовлетворяют моему состоянию элементам, которые этого не делают. Для примера с новыми значениями list2 отношение равно 13/16, потому что 09, 49 и 77 не являются первичными.
Не могли бы вы привести простой пример? – James
@James Я редактировал вопрос. Надеюсь, теперь это станет более ясным. –
Просто убедитесь, что вас интересует решение, в котором внешняя функция является гибкой, а не просто о простых числах, правильно? – Reti43