只是改变了看起来没差别的while为什么就ac了,谢谢您
查看原帖
只是改变了看起来没差别的while为什么就ac了,谢谢您
798903
JoMaker楼主2023/3/2 19:41

在cs函数里面的while原本用的是int l = 0, r = 0;

while(l<=r)

改成下面的就ac了,why???

void bfs(int x, int y) {

sum ++;

q[1].x = x;

q[1].y = y;

int l = 0, r = 1;

while(l < r){

 l ++;
 refer[q[l].x][q[l].y] = 1;//表示检查过了
 for(int i=0; i<4; i++){
 	if(q[l].x + dx[i] < 1 || q[l].x + dx[i] > n)
		continue;
 	if(q[l].y + dy[i] < 1 || q[l].y + dy[i] > m)
		continue;
 	if(refer[q[l].x + dx[i]][q[l].y + dy[i]] == 0 && local[q[l].x + dx[i]][q[l].y + dy[i]] != '0'){
		r ++;
		q[r].x = q[l].x + dx[i] ;
		q[r].y = q[l].y + dy[i] ;
	}
 }

} }

2023/3/2 19:41
加载中...