题目链接:https://codeforces.com/problemset/problem/540/C
题意:
这是一个多级冰洞,洞的每一层都是相同的平面
一个平面由完整冰和裂缝冰组成, 在一个平面上你可以4个方向进行移动
如果移动到裂缝冰,你便会向下跌一层,如果移动到完整冰,你仍可以在这个平面上进行移动,但在走过的完整冰会变为裂缝冰
最后,如果可以到达终点Yes,否No
思路:(简单的广搜即可)
需要注意的是:当你走到终点时,该冰必须为破裂冰,因为你需要从终点跌落下去,如果是完整冰,那你必须再一次走到终点才行
两种方法来写
方法1:模拟队列来写(需开一个特定的空间,会产生空间的浪费)
啊哈算法上有详细解释,是一本基础算法书,建议初学者看
#include<stdio.h>
#include<string.h>
char map[505][505];
int row,column,r1,c1,r2,c2;
int to[4][2]={
{
0,1},{
0,-1},{
1,0},{
-1,0}};
struct Node{
int x,y;
}que[250005];
int bfs(int r,int c)
{
int head=1,tail=1;
que[1].x=r;
que[1].y=c;
tail++;
int tx,ty,i,flag=0;
while(head<tail)
{