скажем, у меня есть матрица (массив), подобная этому примеру, но намного больше:
0 0 5 0 3 6 6 4 0 3 0 8 0 1 1
9 4 0 6 0 0 0 4 1 0 6 0 7 0 0
3 1 6 1 5 0 8 0 8 0 3 2 6 4 8
1 0 2 2 8 5 8 1 8 7 4 1 0 3 0
6 3 8 1 0 0 4 0 0 3 1 5 2 0 0
0 0 5 0 3 6 6 4 0 3 0 8 0 1 1
9 4 0 6 0 0 0 4 1 0 6 0 7 0 0
3 1 6 1 5 0 8 0 8 0 3 2 6 4 8
1 0 2 2 8 5 8 1 8 7 4 1 0 3 0
6 3 8 1 0 0 4 0 9 4 1 5 2 0 0
код >
Я пытаюсь определить положение двух равных чисел с наибольшим расстоянием между ними в массиве по диагонали, по горизонтали или по вертикали, с расстоянием, рассчитанным как количество чисел между ними (расстояние d >= 0).
Другие ограничения:
- Прямая линия, как описано выше, может не содержать того же числа, которое обозначает ее начало и конец, поэтому вы не можете иметь 6 0 4 5 6 1 7 3 5 6 и говорят, что расстояние 6..6 равно 8, так как в последовательности есть 6.
- Цифры, которые нужно искать, не задаются, но должны определяться динамически.
В примере результат (учитывая массив как регулярную координатную систему X | Y с 0, 0 в левом нижнем углу), он должен определить P1 (0, 8), P2 (8, 0) с d = 7 ( номер: 9).
Любые хорошие идеи о том, как это сделать эффективно? Я использую С#, но примеры/идеи на других языках тоже ценятся.
В случае, если вы задаетесь вопросом, откуда этот вопрос, я размышлял о различных связанных с математикой проблемах, которые, как мне кажется, трудно решить (для себя) и надеюсь лучше понять эти проблемы, увидев, как другие решают такие проблемы вопросы. Спасибо!