В случае, если кто-то ищет решение на React JS SPA с Laravel. Принятый ответ - лучшее объяснение того, почему такие проблемы происходят. Как уже объяснялось, вам необходимо настроить как клиентскую, так и серверную сторону. В своем шаблоне лезвия включите файл js в комплекте, обязательно используйте URL facade
, как это
<script src="{{ URL::to('js/user/spa.js') }}"></script>
. На ваших маршрутах обязательно добавьте это в основную конечную точку, где находится шаблон клинка. Например,
Route::get('/setting-alerts', function () {
return view('user.set-alerts');
});
Вышеупомянутая основная точка для шаблона клинка. Теперь добавьте необязательный маршрут,
Route::get('/setting-alerts/{spa?}', function () {
return view('user.set-alerts');
});
Проблема заключается в том, что сначала загружается шаблон лезвия, а затем реагирует маршрутизатор. Итак, когда вы загружаете '/setting-alerts'
, он загружает html и js. Но когда вы загружаете '/setting-alerts/about'
, он сначала загружается со стороны сервера. Поскольку на стороне сервера в этом месте ничего нет, он не возвращается. Когда у вас есть этот дополнительный маршрутизатор, он загружает ту же страницу и также загружает маршрутизатор, а затем реагирует загрузчик, решает, какой компонент будет отображаться. Надеюсь, это поможет.
Не знаю, является ли сортировка оптимальной. Но это, безусловно, хорошая отправная точка. Со случайным набором данных я вижу:
Второе решение было найдено с помощью модели смешанного целочисленного программирования . Это оказалось оптимальным (но я добавил ограничение, что значения растут по строкам и столбцам).
Это на самом деле более простая проблема. Ударь его своей алгеброй начальной школы. Во-первых, небольшое понимание покажет, что вы всегда хотите, чтобы числа сортировались при переходе сверху вниз слева направо. Подойдёт либо восходящий, либо нисходящий; они изоморфны. Давайте предположим, что по возрастанию, чтобы соответствовать вашим примерам. Для набора из 9 чисел:
i1 i2 i3
i4 i5 i6
i7 i8 i9
Нам нужно сложить слагаемые
// ROWS
i2-i1 + i3-i2 +
i5-i4 + i6-i5 +
i8-i7 + i9-i8 +
// COLUMNS
i4-i1 + i7-i4 +
i5-i2 + i8-i5 +
i6-i3 + i9-i6
Это сводится к i3-i1 + i6-i4 + i9-i7 + i7-i1 + i8-i2 + i9-i3
И это становится 2 * i9 - 2 * i1 + i6 + i8 - (i2 + i4)
Начните с сортировки своих N
чисел и поиска смежная подпоследовательность чисел A
* B
с наименьшей разницей между самой низкой и самой высокой. Затем расположите номера неугловой границы так, чтобы разница (верхняя + левая) - (нижняя + правая) была минимальной, учитывая, сколько чисел может быть между каждой парой. Наконец, заполните любым доступным способом.
Очень просто, это сводится к суммам верхнего и левого ребер, минус нижний и правый ребра. Основные углы считаются двойными; выпадают верхний правый и нижний левый углы, а также все внутренние термины.
Да, я пропустил несколько логических шагов ... Я надеюсь, что этого достаточно для вас. Он сокращает пространство поиска с A*B
чисел, взятых из N
, до двух смежных последовательностей чисел A+B-2
в этой последовательности из A*B
.