#cpp
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются. Хотите улучшить этот вопрос? Переформулируйте вопрос, чтобы он соответствовал тематике «Stack Overflow на русском». Закрыт 2 года назад. http://rextester.com/ZZGGK27907 http://rextester.com/IGXLV67756 В данных ссылках один и тот же код. Но отличается для компиляторов C++ и C++11. В C++ ответ выводится верный. А в C++11 выводится просто 0. По идее, C++ и C++11 не должны сильно отличаться. Почему может выводится разный ответ в одинаковых кодах? И где может быть ошибка?
Ответы
Ответ 1
Не сильно вдавался в алгоритмические подробности, но как минимум одно проблемное место нашел: stackpath; for(int index = Q.front().idx; index != -1; ) { ... Я попробовал прогнать ваш код на указанном наборе входных данных и обнаружил, что к указанному моменту очередь Q оказывается пуста (не углублялся, должно так быть или нет). Соответственно Q.front().idx обращается к первому элементу пустой очереди. В результате возникает неопределенное поведение. А раз оно неопределенное, то, в зависимости от компилятора, программа ведет себя по разному. Как-то вам нужно этот момент корректно обойти или (если он - не то что вы ожидали), починить код до указанного.
Комментариев нет:
Отправить комментарий