2012-03-09 4 views
-8

Я не могу понять, почему этот код имел бы ошибку сегментации. Любая помощь там? Это для загадки в книге, а не для домашнего задания.Почему этот код Seg_Faulting?

Код: http://pastebin.com/WvWkckzX

Входной сигнал: http://pastebin.com/yvHXquuf

Подсказка: http://pastebin.com/dmmyG2DY

Входной сигнал: Первая строка содержит количество тестовых случаев T. случаев Т испытаний следуют. Первая строка каждого тестового примера содержит N и M. Следующие N строк описывают города в Byteland. В i-й строке содержится буква «A» или «B», обозначающая подразделение армии, расположенное в городе i, и стоимость ci для победы над этой армией. Следующие М-линии описывают дороги в городе. I-я строка содержит xi и yi, число городов, связанных дорогой.

Выход: Выходные линии T, соответствующие каждому испытательному корпусу, содержащему самую дешевую стоимость достижения вашей цели.

Пример ввода:

1 
3 3 
A 1 
A 1 
B 10 
1 2 
1 3 
2 3 

Пример вывода:

2 

City 1 (A-1) соединяется с городом 2 (A-1) и 3 города (B-10). Для того, чтобы атаковать город 3 будет стоить 10, а просто атаковать города 1 и 2 будет стоить только 2.

GDB говорит мне, что SEG ошибки в «cost_testCase»

+5

Пожалуйста, создайте гораздо более короткий тестовый пример (не более 10-15 строк), а затем отредактируйте свой вопрос, чтобы включить его напрямую. –

+0

это TSP? –

+1

Что вы узнали, когда вы запускали программу в отладчике? Во время выполнения какой линии произошла ошибка seg? –

ответ

1

Я уверен, что это потому, что вы места индексации i которых не более ограничен cities.size()

Если установить точку останова в строке 127, и сделать дисплей на i, j, locations.size() и cities.size(), и держать продолжается через код, вы увидите, что cities получает размер 4, в то время как locations получает размер 3, и вы указываете locations с 3, что из-за пределов, и я уверен, что именно здесь вы берете ошибку. У меня действительно не было много времени, чтобы поиграть с этим, но похоже, что так оно и есть.

+0

Это так невероятно расстраивает ... Спасибо! Теперь он отлично работает! –

Смежные вопросы