求助二分灵异事件,在线等,急!
  • 板块灌水区
  • 楼主DFs_YYDS
  • 当前回复8
  • 已保存回复8
  • 发布时间2024/8/1 19:34
  • 上次更新2024/8/1 20:40:54
查看原帖
求助二分灵异事件,在线等,急!
1119406
DFs_YYDS楼主2024/8/1 19:34

以下是我的代码中一个二分片段,目的是求出结构体数组中从 i+1i+1 到 n−1n-1 中第一次出现字符串 ss 的位置。先不管具体正不正确,但是我发现,在 while 循环结束时,ll 和 rr 的值都是发生正常改变的,都有一个赋值成了 midmid,但是在下一次循环开始时,ll 和 rr 又变成了上次循环原来的值,导致运行时错误,为啥?

以下是代码:

int ef(int i,string s){
	int l=i+1,r=n-1;
	if(a[r].a<s)return -1;
	if(a[l].a>s)return -1;
	while(l+1<r){
		int mid=(l+r)/2;
		if(a[mid].a>=s)r=mid;
		else l=mid;
	}
	return r;
}

已经确定结构体数组 a.aa.a 为字符串,并且 ii 没有越界。玄关。

2024/8/1 19:34
加载中...