[C++] [BFS] [Queue] 全RE(#1~#10)memory错误
查看原帖
[C++] [BFS] [Queue] 全RE(#1~#10)memory错误
567610
RDFZchenyy楼主2022/2/21 21:36
#include<bits/stdc++.h>
using namespace std;

#define MAXN 100005

struct step{
	int step_cnt;
	int place;
	step(){};
	step(int __step_cnt,int __place){
		this->step_cnt=__step_cnt;
		this->place=__place;
	}
};

int vis[MAXN];

step first_step(int first_x){
	step first_step1;
	first_step1.step_cnt=0;
	first_step1.place=first_x;
	return first_step1;
}

int bfs(int step_up,int x,int y){
	memset(vis,0,sizeof(vis));
	queue<step> step_q;
	step step_q_front,step_new;
	step_q.push(first_step(x));
	while(!step_q.empty()){
		step_q_front=step_q.front();
		step_q.pop();
		
		if(step_q_front.place==y){
			return step_q_front.step_cnt;
		}
		if(vis[step_q_front.place]==1){
			continue;
		}
		vis[step_q_front.place]=true;
		
		step_new.step_cnt=step_q_front.step_cnt+1;
		
		step_new.place=step_q_front.place+1;
		step_q.push(step_new);
		
		step_new.place=step_q_front.place-1;
		step_q.push(step_new);
		
		if(step_q_front.place<10000000){
			step_new.place=step_q_front.place*2;
			step_q.push(step_new);		
			printf("flag, step_q_front.place=%d\n",step_q_front.place);	
		}else{
			continue;
		}	
	}
	return -1;
}

void solve(int x,int y){
	printf("%d\n",bfs(abs(x-y),x,y));
	
	return;
}

int main(){
	int t,read_x,read_y;
	scanf("%d",&t);
	for(int i=0;i<t;i++){
		scanf("%d %d",&read_x,&read_y);
		solve(read_x,read_y);
	}
	
	return 0;
}
2022/2/21 21:36
加载中...