问题遇到的现象和发生背景
运行局部搜索代码时发现的错误,是在Linux系统下,用g++编译的。我前几天跑dimacs例子,发现36个例子里,有三个例子提示了这个错误,真奇怪。
问题相关代码,请勿粘贴截图
void remove(int c){
cs[c].is_in_c=0;
cs[c].score=0;
cs[c].config=0;
cs[c].time_stamp=step;
if( variable_cover[c]<kcovered)
{
uncover[uncover_num]=c;i
index_uncover[c]=uncover_num;
uncover_num++;
}
}
错误信息是在 if( variable_cover[c]<kcovered)出现的
我觉得是C传过来就传错了,下面是获取C的代码,C就是maxc。我检查没有问题出现啊!
int find_best_in_c(int allowTabu){
int i, maxc,j,k;
int sr=INT_MIN, ct=1;
state=0;
for(i=0;i<vertex_num;i++){
if(cs[i].must_in_c) continue;
if(!cs[i].is_in_c) continue;
if(allowTabu&&in_tabu(i)) continue;
state=1;
k=compare(sr,ct, cs[i].score, cs[i].cost);
if(sr==INT_MIN||k<0){
sr=cs[i].score;
ct=cs[i].cost;
maxc=i;
} else if(k==0){
if(cs[maxc].time_stamp>cs[i].time_stamp){
maxc=i;
}
}
}
return maxc;
}
运行结果及报错内容
我的解答思路和尝试过的方法
我感觉只有这三个例子出错了,是不是意味着是例子的错误,但是我检查了例子和其他的例子构成是一样的。我想不通用同样是代码其他的例子就能跑出来,不懂就那三个例子有问题呢?
我想要达到的结果
程序能够运行。谢谢大家