• cf540C


    题目大意:

    给你一个地图,只不过是在冰面上,冰面每块只能走一次,问到达目的地的时候是否可以掉下去。X是洞,.是可以走一次的冰路。
    先是输入n,m,这是地图的行列,然后输入地图,最后输入起始点和目的点坐标。

    思路:宽搜BFS,最基本的,没什么技巧。由于是宽搜只走一次,所以book[]也可以不要了,走过后直接把.变成X。

    代码:

    #include <stdio.h>
    #include <string.h>
    int x1,y1,x2,y2,n,m;
    char map[510][510];
    int to[4][2]= {1,0,0,1,0,-1,-1,0};
    int f;
    struct L
    {
    	int x,y;
    } pp[250100];
    void bfs()
    {
    	int tx,ty,head=1,tail=1,i,j;
    	pp[tail].x=x1;
    	pp[tail].y=y1;
    	tail++;
    	while(head<tail)
    	{
    
    		for (i=0; i<4; i++)
    		{
    			tx=pp[head].x+to[i][0];
    			ty=pp[head].y+to[i][1];
    			if (tx==x2&&ty==y2&&map[tx][ty]=='X')
    			{
    				f=1;
    				break;
    			}
    
    			if (tx>=0&&tx<n&&ty>=0&&ty<m&&map[tx][ty]=='.')
    			{
    				map[tx][ty]='X';
    				pp[tail].x=tx;
    				pp[tail].y=ty;
    				tail++;
    			}
    
    		}
    		if (f)
    			break;
    		head++;
    	}
    
    }
    int main()
    {
    	int i,j;
    	f=0;
    	memset(map,0,sizeof(map));
    	scanf("%d %d",&n,&m);
    	for (i=0; i<n; i++)
    	{
    		scanf("%s",map[i]);
    	}
    	scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
    	x1--,x2--,y1--,y2--;
    	bfs();
    	if (f==1)
    		printf("YES
    ");
    	else
    		printf("NO
    ");
    	return 0;
    }
  • 相关阅读:
    本地存储 localStorage
    正则对象
    面向对象
    事件
    日期对象
    网易适配与淘宝适配
    自动把网页px单位转换成rem
    湖南省web应用软件(中慧杯)
    百度图片审核功能
    百度ai语音识别
  • 原文地址:https://www.cnblogs.com/shidianshixuan/p/13376261.html
Copyright © 2020-2023  润新知