Заслуженный участник |
|
27/04/09 28128
|
Последний раз редактировалось arseniiv 27.01.2018, 01:07, всего редактировалось 4 раз(а).
(От меня вам устаревший пост, который был начат давно.) Фактически, счётчик подмножеств должен уметь отзываться на три «статуса перебора» — много/ровно (можно исключить ситуации «много» заранее, не разрешая выбирать слишком много какого-нибудь элемента), мало и неизвестно. Только при последнем делается самый маленький шаг, при остальных пропуски. Вот какой протокол у моей наконец-то допиленной программы на ваших данных из спойлера (слагаемые также идут от больших к меньшим, но не повторяются):
{ *, *, *, *, *, *, *, * } ?
{ 1, *, *, *, *, *, *, * } ?
{ 1, 1, *, *, *, *, *, * } ?
{ 1, 1, 0, *, *, *, *, * } ?
{ 1, 1, 0, 0, *, *, *, * } ?
{ 1, 1, 0, 0, 0, *, *, * } ?
{ 1, 1, 0, 0, 0, 1, *, * } ?
{ 1, 1, 0, 0, 0, 1, 0, * } ?
{ 1, 1, 0, 0, 0, 1, 0, 0 } <
{ 1, 1, 0, 0, 0, 0, *, * } <
{ 1, 0, *, *, *, *, *, * } ?
{ 1, 0, 1, *, *, *, *, * } ?
{ 1, 0, 1, 0, *, *, *, * } ?
{ 1, 0, 1, 0, 1, *, *, * } =
{ 1, 0, 1, 0, 0, *, *, * } ?
{ 1, 0, 1, 0, 0, 1, *, * } ?
{ 1, 0, 1, 0, 0, 1, 0, * } ?
{ 1, 0, 1, 0, 0, 1, 0, 1 } =
{ 1, 0, 1, 0, 0, 1, 0, 0 } <
{ 1, 0, 1, 0, 0, 0, *, * } <
{ 1, 0, 0, *, *, *, *, * } ?
{ 1, 0, 0, 1, *, *, *, * } ?
{ 1, 0, 0, 1, 1, *, *, * } ?
{ 1, 0, 0, 1, 1, 0, *, * } ?
{ 1, 0, 0, 1, 1, 0, 0, * } ?
{ 1, 0, 0, 1, 1, 0, 0, 1 } =
{ 1, 0, 0, 1, 1, 0, 0, 0 } <
{ 1, 0, 0, 1, 0, *, *, * } ?
{ 1, 0, 0, 1, 0, 1, *, * } ?
{ 1, 0, 0, 1, 0, 1, 1, * } ?
{ 1, 0, 0, 1, 0, 1, 1, 0 } <
{ 1, 0, 0, 1, 0, 1, 0, * } <
{ 1, 0, 0, 1, 0, 0, *, * } <
{ 1, 0, 0, 0, *, *, *, * } ?
{ 1, 0, 0, 0, 2, *, *, * } ?
{ 1, 0, 0, 0, 2, 0, *, * } ?
{ 1, 0, 0, 0, 2, 0, 1, * } ?
{ 1, 0, 0, 0, 2, 0, 1, 0 } <
{ 1, 0, 0, 0, 2, 0, 0, * } <
{ 1, 0, 0, 0, 1, *, *, * } <
{ 0, *, *, *, *, *, *, * } ?
{ 0, 1, *, *, *, *, *, * } ?
{ 0, 1, 1, *, *, *, *, * } ?
{ 0, 1, 1, 0, *, *, *, * } ?
{ 0, 1, 1, 0, 1, *, *, * } ?
{ 0, 1, 1, 0, 1, 0, *, * } ?
{ 0, 1, 1, 0, 1, 0, 0, * } ?
{ 0, 1, 1, 0, 1, 0, 0, 0 } <
{ 0, 1, 1, 0, 0, *, *, * } ?
{ 0, 1, 1, 0, 0, 1, *, * } ?
{ 0, 1, 1, 0, 0, 1, 1, * } ?
{ 0, 1, 1, 0, 0, 1, 1, 0 } <
{ 0, 1, 1, 0, 0, 1, 0, * } <
{ 0, 1, 1, 0, 0, 0, *, * } <
{ 0, 1, 0, *, *, *, *, * } ?
{ 0, 1, 0, 1, *, *, *, * } ?
{ 0, 1, 0, 1, 1, *, *, * } ?
{ 0, 1, 0, 1, 1, 0, *, * } ?
{ 0, 1, 0, 1, 1, 0, 1, * } ?
{ 0, 1, 0, 1, 1, 0, 1, 0 } <
{ 0, 1, 0, 1, 1, 0, 0, * } <
{ 0, 1, 0, 1, 0, *, *, * } <
{ 0, 1, 0, 0, *, *, *, * } ?
{ 0, 1, 0, 0, 2, *, *, * } ?
{ 0, 1, 0, 0, 2, 1, *, * } ?
{ 0, 1, 0, 0, 2, 1, 0, * } ?
{ 0, 1, 0, 0, 2, 1, 0, 0 } <
{ 0, 1, 0, 0, 2, 0, *, * } <
{ 0, 1, 0, 0, 1, *, *, * } <
{ 0, 0, *, *, *, *, *, * } ?
{ 0, 0, 1, *, *, *, *, * } ?
{ 0, 0, 1, 1, *, *, *, * } ?
{ 0, 0, 1, 1, 1, *, *, * } ?
{ 0, 0, 1, 1, 1, 0, *, * } ?
{ 0, 0, 1, 1, 1, 0, 1, * } ?
{ 0, 0, 1, 1, 1, 0, 1, 0 } <
{ 0, 0, 1, 1, 1, 0, 0, * } <
{ 0, 0, 1, 1, 0, *, *, * } <
{ 0, 0, 1, 0, *, *, *, * } ?
{ 0, 0, 1, 0, 2, *, *, * } ?
{ 0, 0, 1, 0, 2, 1, *, * } ?
{ 0, 0, 1, 0, 2, 1, 0, * } ?
{ 0, 0, 1, 0, 2, 1, 0, 0 } <
{ 0, 0, 1, 0, 2, 0, *, * } <
{ 0, 0, 1, 0, 1, *, *, * } <
{ 0, 0, 0, *, *, *, *, * } ?
{ 0, 0, 0, 1, *, *, *, * } ?
{ 0, 0, 0, 1, 3, *, *, * } ?
{ 0, 0, 0, 1, 3, 0, *, * } ?
{ 0, 0, 0, 1, 3, 0, 0, * } ?
{ 0, 0, 0, 1, 3, 0, 0, 0 } <
{ 0, 0, 0, 1, 2, *, *, * } ?
{ 0, 0, 0, 1, 2, 1, *, * } ?
{ 0, 0, 0, 1, 2, 1, 1, * } ?
{ 0, 0, 0, 1, 2, 1, 1, 0 } <
{ 0, 0, 0, 1, 2, 1, 0, * } <
{ 0, 0, 0, 1, 2, 0, *, * } <
{ 0, 0, 0, 1, 1, *, *, * } <
{ 0, 0, 0, 0, *, *, *, * } <
Символы справа показывают отклик считающей части, сам перебор использует только данные о максимальном допустимом числе вхождений элементов и эти отклики, чтобы узнать, куда дальше. Как у вас получилось на две строки меньше (97 vs. 99), удивительно. -- Сб янв 27, 2018 03:00:56 --А, так у вас в последнем посте другие числа; тогда имелся в виду тот, который пораньше. Сейчас сравню с новыми. -- Сб янв 27, 2018 03:06:40 --UPD. Позор мне, ещё больше разница получается (120 шагов):
{ *, *, *, *, *, *, *, *, * } ?
{ 1, *, *, *, *, *, *, *, * } ?
{ 1, 1, *, *, *, *, *, *, * } ?
{ 1, 1, 0, *, *, *, *, *, * } ?
{ 1, 1, 0, 0, *, *, *, *, * } ?
{ 1, 1, 0, 0, 0, *, *, *, * } ?
{ 1, 1, 0, 0, 0, 1, *, *, * } =
{ 1, 1, 0, 0, 0, 0, *, *, * } ?
{ 1, 1, 0, 0, 0, 0, 1, *, * } ?
{ 1, 1, 0, 0, 0, 0, 1, 1, * } =
{ 1, 1, 0, 0, 0, 0, 1, 0, * } <
{ 1, 1, 0, 0, 0, 0, 0, *, * } ?
{ 1, 1, 0, 0, 0, 0, 0, 2, * } ?
{ 1, 1, 0, 0, 0, 0, 0, 2, 1 } =
{ 1, 1, 0, 0, 0, 0, 0, 2, 0 } <
{ 1, 1, 0, 0, 0, 0, 0, 1, * } <
{ 1, 0, *, *, *, *, *, *, * } ?
{ 1, 0, 1, *, *, *, *, *, * } ?
{ 1, 0, 1, 0, *, *, *, *, * } ?
{ 1, 0, 1, 0, 1, *, *, *, * } ?
{ 1, 0, 1, 0, 1, 0, *, *, * } ?
{ 1, 0, 1, 0, 1, 0, 0, *, * } ?
{ 1, 0, 1, 0, 1, 0, 0, 1, * } =
{ 1, 0, 1, 0, 1, 0, 0, 0, * } <
{ 1, 0, 1, 0, 0, *, *, *, * } ?
{ 1, 0, 1, 0, 0, 1, *, *, * } ?
{ 1, 0, 1, 0, 0, 1, 1, *, * } ?
{ 1, 0, 1, 0, 0, 1, 1, 0, * } ?
{ 1, 0, 1, 0, 0, 1, 1, 0, 1 } =
{ 1, 0, 1, 0, 0, 1, 1, 0, 0 } <
{ 1, 0, 1, 0, 0, 1, 0, *, * } ?
{ 1, 0, 1, 0, 0, 1, 0, 2, * } =
{ 1, 0, 1, 0, 0, 1, 0, 1, * } <
{ 1, 0, 1, 0, 0, 0, *, *, * } <
{ 1, 0, 0, *, *, *, *, *, * } ?
{ 1, 0, 0, 1, *, *, *, *, * } ?
{ 1, 0, 0, 1, 1, *, *, *, * } ?
{ 1, 0, 0, 1, 1, 1, *, *, * } ?
{ 1, 0, 0, 1, 1, 1, 0, *, * } ?
{ 1, 0, 0, 1, 1, 1, 0, 0, * } ?
{ 1, 0, 0, 1, 1, 1, 0, 0, 1 } =
{ 1, 0, 0, 1, 1, 1, 0, 0, 0 } <
{ 1, 0, 0, 1, 1, 0, *, *, * } ?
{ 1, 0, 0, 1, 1, 0, 1, *, * } ?
{ 1, 0, 0, 1, 1, 0, 1, 1, * } ?
{ 1, 0, 0, 1, 1, 0, 1, 1, 1 } =
{ 1, 0, 0, 1, 1, 0, 1, 1, 0 } <
{ 1, 0, 0, 1, 1, 0, 1, 0, * } <
{ 1, 0, 0, 1, 1, 0, 0, *, * } <
{ 1, 0, 0, 1, 0, *, *, *, * } ?
{ 1, 0, 0, 1, 0, 1, *, *, * } ?
{ 1, 0, 0, 1, 0, 1, 1, *, * } ?
{ 1, 0, 0, 1, 0, 1, 1, 2, * } ?
{ 1, 0, 0, 1, 0, 1, 1, 2, 1 } =
{ 1, 0, 0, 1, 0, 1, 1, 2, 0 } <
{ 1, 0, 0, 1, 0, 1, 1, 1, * } <
{ 1, 0, 0, 1, 0, 1, 0, *, * } <
{ 1, 0, 0, 1, 0, 0, *, *, * } <
{ 1, 0, 0, 0, *, *, *, *, * } <
{ 0, *, *, *, *, *, *, *, * } ?
{ 0, 1, *, *, *, *, *, *, * } ?
{ 0, 1, 1, *, *, *, *, *, * } ?
{ 0, 1, 1, 1, *, *, *, *, * } ?
{ 0, 1, 1, 1, 0, *, *, *, * } ?
{ 0, 1, 1, 1, 0, 0, *, *, * } ?
{ 0, 1, 1, 1, 0, 0, 0, *, * } ?
{ 0, 1, 1, 1, 0, 0, 0, 0, * } ?
{ 0, 1, 1, 1, 0, 0, 0, 0, 1 } =
{ 0, 1, 1, 1, 0, 0, 0, 0, 0 } <
{ 0, 1, 1, 0, *, *, *, *, * } ?
{ 0, 1, 1, 0, 1, *, *, *, * } ?
{ 0, 1, 1, 0, 1, 0, *, *, * } ?
{ 0, 1, 1, 0, 1, 0, 1, *, * } ?
{ 0, 1, 1, 0, 1, 0, 1, 0, * } ?
{ 0, 1, 1, 0, 1, 0, 1, 0, 1 } =
{ 0, 1, 1, 0, 1, 0, 1, 0, 0 } <
{ 0, 1, 1, 0, 1, 0, 0, *, * } ?
{ 0, 1, 1, 0, 1, 0, 0, 2, * } =
{ 0, 1, 1, 0, 1, 0, 0, 1, * } <
{ 0, 1, 1, 0, 0, *, *, *, * } ?
{ 0, 1, 1, 0, 0, 1, *, *, * } ?
{ 0, 1, 1, 0, 0, 1, 1, *, * } ?
{ 0, 1, 1, 0, 0, 1, 1, 1, * } ?
{ 0, 1, 1, 0, 0, 1, 1, 1, 1 } =
{ 0, 1, 1, 0, 0, 1, 1, 1, 0 } <
{ 0, 1, 1, 0, 0, 1, 1, 0, * } <
{ 0, 1, 1, 0, 0, 1, 0, *, * } <
{ 0, 1, 1, 0, 0, 0, *, *, * } <
{ 0, 1, 0, *, *, *, *, *, * } ?
{ 0, 1, 0, 1, *, *, *, *, * } ?
{ 0, 1, 0, 1, 1, *, *, *, * } ?
{ 0, 1, 0, 1, 1, 1, *, *, * } ?
{ 0, 1, 0, 1, 1, 1, 1, *, * } =
{ 0, 1, 0, 1, 1, 1, 0, *, * } ?
{ 0, 1, 0, 1, 1, 1, 0, 1, * } ?
{ 0, 1, 0, 1, 1, 1, 0, 1, 1 } =
{ 0, 1, 0, 1, 1, 1, 0, 1, 0 } <
{ 0, 1, 0, 1, 1, 1, 0, 0, * } <
{ 0, 1, 0, 1, 1, 0, *, *, * } ?
{ 0, 1, 0, 1, 1, 0, 1, *, * } ?
{ 0, 1, 0, 1, 1, 0, 1, 2, * } ?
{ 0, 1, 0, 1, 1, 0, 1, 2, 1 } =
{ 0, 1, 0, 1, 1, 0, 1, 2, 0 } <
{ 0, 1, 0, 1, 1, 0, 1, 1, * } <
{ 0, 1, 0, 1, 1, 0, 0, *, * } <
{ 0, 1, 0, 1, 0, *, *, *, * } <
{ 0, 1, 0, 0, *, *, *, *, * } <
{ 0, 0, *, *, *, *, *, *, * } ?
{ 0, 0, 1, *, *, *, *, *, * } ?
{ 0, 0, 1, 1, *, *, *, *, * } ?
{ 0, 0, 1, 1, 1, *, *, *, * } ?
{ 0, 0, 1, 1, 1, 1, *, *, * } ?
{ 0, 0, 1, 1, 1, 1, 1, *, * } ?
{ 0, 0, 1, 1, 1, 1, 1, 2, * } =
{ 0, 0, 1, 1, 1, 1, 1, 1, * } <
{ 0, 0, 1, 1, 1, 1, 0, *, * } <
{ 0, 0, 1, 1, 1, 0, *, *, * } <
{ 0, 0, 1, 1, 0, *, *, *, * } <
{ 0, 0, 1, 0, *, *, *, *, * } <
{ 0, 0, 0, *, *, *, *, *, * } <
[20, 18, 5], [20, 18, 3, 2], [20, 18, 2, 2, 1], [20, 14, 7, 2], [20, 14, 5, 3, 1], [20, 14, 5, 2, 2], [20, 10, 7, 5, 1], [20, 10, 7, 3, 2, 1], [20, 10, 5, 3, 2, 2, 1], [18, 14, 10, 1], [18, 14, 7, 3, 1], [18, 14, 7, 2, 2], [18, 14, 5, 3, 2, 1], [18, 10, 7, 5, 3], [18, 10, 7, 5, 2, 1], [18, 10, 7, 3, 2, 2, 1], [14, 10, 7, 5, 3, 2, 2]
|
|