Что за ошибку то выдает система? В коде виду 2 ошибки - отсутствие фигурных скобок у else, и все ту же запись за границу массива в цикле. Вы там после всех resize'ов можете получить массив b га один короче массива a. Вы там +1 к length делаете как бы для этого переноса, но цикл суммирования все равно гоните до length-1. Можно прибавлять перенос, если он не 0, тогда выхода за границу нк будет. Но испоавьте код, чтобы массивы были одинаковой длины.
impelix, или заведите отдельный вектор для ответа. Количество пар можно подсчитать перед выводом (считайте различия в массиве отдельным циклом). Цифры можно хранить в char - тоже экономия.
s4q, Надо задать к этому массиву еще и список, между какими двумя центрами можно возить товары. Обычно это только между отделением и родительским ему а так же между любыми двумя отделениями верхнего уровня.
Вы должны задать эти ограничения. По координатам их вывести невозможно, ибо границы областей/поселений нарезаны весьма произвольно. Если вы их не задаете, то ответ остается такой-же: кратчайший путь будет без промежуточных точек, по прямой.
s4q, но тогда кратчайший путь - прямая из начала в конец (скорее всего не посещая ни одну точку).
Судя по обсуждению под ответами, у вас есть важное ограничение - иерархическая структура логистики почтовых отделений. Нельзя из районного отделения новосибираска отправить посылку напрямую в районное отделение в архангельске - слишком много различных путей для посылок будет. Посылка должна идти через городской пункт, через областной в новосибирске, оттуда, скорее всего, через москву в сортировочный центр в арзангельской области.
s4q, Путь должен проходить через промежуточные точки в заданном порядке или как угодно? Надо посетить все промежуточные точки, или можно пропускать их?
Это координаты в мире, т.е. путь строится по дорогам условным google maps? Или дело на плоскости, и можно проводить прямые? В тегах вы указали "графы", может быть у вас есть произвольный граф на котором надо решить задачу?
rPman, Ох, напутал я. Для произведения матриц оно не применимо, но перемножение полиномов, длинных чисел и свертки на матрицах - делаются через FFT. Есть какие-то извращенные алгоритмы вроде этого (страница 31+), но это совсем не то, что я представлял, когда упоминал FFT выше.
HrustHr, Т.е. у вас есть не данное число X, Вы из него вычитаете 4, получаете неизвестное X-4. Дальше что? Как вообще можно из неизвестного числа что-то вычитать? Ну допустим, вы 40 раз вычли, получили X-160. 42 раза вычли, получили X-168 - все неизвестные числа. Как вы определяете, что дальше вычитать не надо?
А почему из 167? Если вы ищете число 167, то его искать не надо, вот оно уже есть: "167". Если же вы знаете, что X от 1 до 167, то вычитать 4 нельзя. А вдруг искомое число 166? Вы его вычитанием 4 пропустите. Если вы можете сказать, что перескочили через искомое X - то это уже и есть тот самый критерий, какое-то дополнительное свойство X, которое можно использовать, например, для бинарного поиска.
HrustHr, вам в прошлый раз пытались объяснить, что мы не телепаты, просто взять и выкинуть из перебора почти все числа - нельзя. Только если вы дадите полное и строгое описание свойств искомого числа X, может быть шанс на какое-то ускорение перебора. Но, если это действительно криптография, то шанса вообще нет.
Rsa97, по-моему, этот кадр уже был здесь несколько месяцев назад с несколькими похожими вопросами. Собственно задачу так и не рассказал ни разу, а только намеками. Чувак явно ломает криптографию и держит в тайне свою гениальную идею.
HrustHr, вот вам аналогия вашего вопроса: мне надо найти убийцу из 100000 жителей города. Как не опрашивать всех, а только 10 человек? Ответ - никак. Если вам не известно какое-то еще свойство убийцы (например, кто-то видел мужика в черной куртке), то никак.
Зависит целиком и полностью от того, зачем там time.sleep() в коде используется. И вообще, зачем вам его убирать? Хотите, чтобы тесты прогонялись быстрее?
rusyska55011, Ну тогда остается только запись в не свою память. Что за последовательность операций приводит к падению? Попробуйте ее сократить максимально, выкидывая какие-то операции поочередно пока программа продолжает падать. А дальше попробуйте после каждой операции вывести весь список. Так же выводите адреса удаляемых вершин.
yourDaddy1337, Но если вы хотите, чтобы символ был нормально в консоли виден, то надо выводить именно символ '3', с кодом 51. Ну или просто int в cout, он сам внутри все преобразует.
Если же вы хотите обмениваться данными между двумя программами, то сначала определитесь, у вас формат бинарный или текстовый? Если текстовый, то выводите сразу int, а на другой стороне читайте int. И в консоли все отображаться будет нормально.
Если же формат бинарный, то глазами его читать не получится - там будет нечитаемый ужас всегда. Тогда можно 3 действительно выводить как 0x03. Но тогда надо бы еще всякие заголовки продумать: тип поля, размер данных, в каком порядке байты идут (от старших к младшим или наоборот).
Alexandroppolus, это зависит от условия. Может, для повтора надо сходить в соседнюю клетку и обратно. Тогда никакие повторы обрабатывать не надо. Вообще, второй тест из вопроса это покажет, но мне лень отсчитывать там шаги. Но если все символы повтора съедаются за один шаг, то еще можно переходы делать не на +1 в третьем индексе, а на + сколько там одинаковых символов из матрицы в этой позиции встречается.
ChatGPT - очень плохой советник. Иногда он выдает лютый, но правдоподобный бред, как у вас. Никогда не спрашивайте у него чего-то, в чем не разбираетесь достаточно, чтобы понять что он вам галлюцинации вывалил.
Т. е, начав с заданной координаты, надо пройти минимальный путь, что бы посетить какие-то клетки с буквами из зданного слова по порядку? А что делать со словом "aaa"? Надо ли три раза наступить на клетку с a, или можно ее один раз посетить? Какие ограничения?