#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 обращается к первому элементу пустой очереди. В результате возникает неопределенное поведение. А раз оно неопределенное, то, в зависимости от компилятора, программа ведет себя по разному. Как-то вам нужно этот момент корректно обойти или (если он - не то что вы ожидали), починить код до указанного.
Комментариев нет:
Отправить комментарий