luogu1135:奇怪的电梯:经典宽搜

题目连接

  • 该题是luogu试炼场的2-12:T3

题目大意

  1. 一栋楼有 n 层,要求从 A 层去 B 层;
  2. 知道每一层都有一个数字 x,表示能向上或向下移动 x 的间距;
  3. 求从 A 层 去 B 层的最短路。

题目分析

  • 每层都有一个固定的数字 x ,其实就是步长,而且只能在(0,n ]的楼层内移动
  • 经典的宽搜题目


解题思路:

  1. 用一个队列存储“下一次能到达的楼层”;
  2. 题目有个坑点,就是 0 数据

代码1:

//解题思路:
//1 经典宽搜,同“抓住那头牛”
//2 两个方向(上,下)
//3 考察队列的使用,无聊但是又实用的坑点 0 
 
#include

int n,st,ed;
int a[210],f[210];

void bfs()
{
	int tou=1,wei=2;
	int l[210],t[210];//队列,步数 
	l[1]=st;t[1]=0;
	while(tou=1&&ax<=n) f[ax]=1,t[wei]=t[tou]+1,l[wei++]=ax;
		if(!f[bx]&&bx>=1&&bx<=n) f[bx]=1,t[wei]=t[tou]+1,l[wei++]=bx;
		tou++;
	}
	printf("-1");
}

int main()
{
	scanf("%d %d %d",&n,&st,&ed);
	if(st==ed) { printf("0");return 0; } //无聊,但是又实用的坑点 
	for(int i=1;i<=n;i++) scanf("%d",&a[i]),f[i]=0;
	bfs();
	return 0;
}

你可能感兴趣的:(题解,宽搜,luogu,大礼包,题表,luogu1135,奇怪的电梯,宽搜)