Вызов
Учитывая сетку, как это,
1 2 3 4 5 6 7 8
1 . . . . . . . .
2 . # . . . # . .
3 . . . . . . . .
4 . . . . . . . .
5 . . . . . . . .
6 . . # . . . . .
7 . . . . . . . .
8 . . . . . . . .
напишите фрагмент кода, который может определить размер самого большого квадрата, который не содержит «#». (Ответом на этот вход является 5x5, поскольку нижняя правая сетка 5x5 является наибольшим квадратом).
Квадрат должен иметь стороны, параллельные осям x и y.
В качестве некоторых мелких деталей: исходная сетка всегда квадратная и длина ее стороны отдается вам. Координаты символов «#» также даны вам.
Детали ввода
Первая строка: N (1 <= N <= 1000), длина стороны квадратной сетки и T (1 <= T <= 10000) количество знаков «#».
Следующие строки T: координаты каждого из T #
Тестовые случаи
Вход № 1:
8 3
2 2
2 6
6 3
Результат № 1: 5
================
Вход № 2:
8 4
1 1
1 8
8 1
8 8
Результат № 2: 6
================
Вход № 3:
5 1
3 3
Результат № 3: 2
Это самый быстрый код проблемы, поэтому быстрый код тестировался на rextester побед компилятора.
Радоваться, веселиться!
источник
fastest-code
1000x1000 это слишком малоОтветы:
Node.js
Принимает ввод как (w, l) , где w - ширина, а l - массив координат [x, y] . (Это можно изменить, если формат ввода действительно такой строгий, как описано.) Работает в O (w²) .
Попробуйте онлайн!
источник
console.log(f( 1000, [...Array(10000)].map(_=>[Math.random()*1000+1|0,Math.random()*1000+1|0]) ));
стоимость 114 мс, хотя это может быть низкой эффективностью языкаC (GCC)
Здесь нет причудливого алгоритма, просто почти грубая сила ... но эй, С быстр.
Входной сигнал: принимает входные данные от стандартного ввода .
Вывод: записывает вывод в стандартный вывод .
Попробуйте онлайн!
источник