2012-03-09 107 views
-8

我不明白为什么这段代码会出现分段错误。有什么帮助吗?这是一本书中的谜语,不是作业作业。为什么这段代码是Seg_Faulting?

代码:http://pastebin.com/WvWkckzX

输入:http://pastebin.com/yvHXquuf

提示:http://pastebin.com/dmmyG2DY

输入: 第一行包含的测试用例T. T检验的情况下遵循的数量。每个测试案例的第一行包含N和M.接下来的N行描述了Byteland的城市。第i行包含一个字母'A'或'B',表示位于城市i的军队师和击败该军队的成本ci。接下来的M行描述城市中的道路。第i行包含xi和yi,即通过道路连接的城市的数量。

输出: 输出T行,每个行对应于包含实现您的目标的最便宜成本的每个测试用例。

样品输入:

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

样本输出:

2 

市1(A-1)连接到城市2(A-1)和城市3(B-10)。攻击城市3将耗资10,而简单地攻打城池1,只有2

GDB告诉我,赛格断层“cost_testCase”

+5

请创建一个更短的测试用例(不超过10-15行),然后编辑您的问题以直接包含它。 – 2012-03-09 18:27:15

+0

这是TSP吗? – 2012-03-09 18:27:48

+1

当你在调试器中运行程序时,你学到了什么?在执行哪一行的过程中发生了seg故障? – 2012-03-09 18:28:27

回答

1

我敢肯定,这是因为你是2将成本通过i索引位置,其最大值由cities.size()

限制如果设置在线路127断点,做ijlocations.size()cities.size()显示器,并保留通过代码继续,你会看到cities得到了大小为4,而locations获得3的大小,并且您索引locations与3,它出界,我敢肯定,这就是你犯错误的地方。我真的没有太多时间来玩这个,但看起来就是这样。

+0

这太令人难以置信了......谢谢!它现在完美运行! – 2012-03-09 19:39:55