24分求助
查看原帖
24分求助
881317
spessert楼主2024/4/8 17:35

这题开O2优化就一堆超内存,不开O2优化超内存变成超时了

#include<iostream>
#include<queue>
using namespace std;
int N,A,B;
struct ELA{
	int ceng; //层数 
	int dis;  //可移距离 
}e[205],temp;
queue<ELA> qu;
int flap=0;
void BFS(){
	//第一个元素入队 
	temp.ceng=e[A].ceng;
	temp.dis=e[A].dis;
	qu.push(temp);
	int cnt=1; //按按钮的次数 
	
	while(!qu.empty()){
		int len=qu.size();
		while(len--){
			int a=qu.front().ceng;//层数
			int b=qu.front().dis; //可移距离 
			//上
			if(a+b<=N){
				temp.ceng=a+b;
				temp.dis=e[a+b].dis;
				qu.push(temp);
				if(temp.ceng==B){ //到达终点 
					cout<<cnt;
					flap=1;
					return ;
				}
			}
			
			
			//下 
			if(a-b>=1){
				temp.ceng=a-b;
				temp.dis=e[a-b].dis;
				qu.push(temp);
				if(temp.ceng==B){ //到达终点 
					cout<<cnt;
					flap=1;
					return ;
				}
			}
			
			qu.pop();
		}
		cnt++;
		
	}
	
}
int main(){
	cin>>N>>A>>B;
	for(int i=1;i<=N;i++){
		e[i].ceng=i;
		cin>>e[i].dis;
	}
	BFS();
	if(flap==0){
		cout<<-1;
	}
	return 0;
}
2024/4/8 17:35
加载中...