Скажем, у меня есть набор массивов постоянной длины, содержащих только нули и единицы. Моя цель состоит в том, чтобы выяснить, будет ли после вращения любого из массивов элементарные суммы массивов не превышать 1.
Например, допустим, у меня есть следующие три массива: [1, 0, 0, 0], [1, 0, 1, 0] и [1, 0, 0, 0]. Я могу повернуть второй массив на один элемент, а третий - на два элемента, чтобы получить массивы [1, 0, 0, 0], [0, 1, 0, 1], [0, 0, 1, 0] элементарная сумма которого равна [1, 1, 1, 1]. Однако, если бы я не применял вращения, я бы получил сумму [3, 0, 1, 0], которая не соответствует моим требованиям, поскольку один из элементов (3) больше 1.
Теперь, мой вопрос: что такое быстрый способ определить, возможно ли это для произвольного числа массивов? Например, нет возможности повернуть [1, 0, 0, 0], [1, 0, 1, 0], [1, 0, 1, 0] так, чтобы элементы суммы не превышали 1.
Текущая эвристика
Очевидно, что если суммарная сумма массивов, например, длина n, превышает n, то это тривиально невозможно.
Лучшая идея для подхода, о котором я могу думать до сих пор, - это взять два массива, найти способ объединить их вместе и инвертировать результат. Затем мы берем этот результат и следующий массив и повторяем этот процесс. Однако этот метод не гарантирует найти решение, если оно существует.
Мой вопрос в том, чтобы не попробовать все возможные вращения, что было бы хорошим алгоритмом для этой проблемы?