• P2298 Mzc和男家丁的游戏


    题目背景

    mzc与djn的第二弹。

    题目描述

    mzc家很有钱(开玩笑),他家有n个男家丁(做过上一弹的都知道)。他把她们召集在了一起,他们决定玩捉迷藏。现在mzc要来寻找他的男家丁,大家一起来帮忙啊!

    由于男家丁数目不多,再加上mzc大大的找人【laopo】水平很好,所以一次只需要找一个男家丁。

    输入输出格式

    输入格式:

     

    第一行有两个数n,m,表示有n行m列供男家丁躲藏,

    之后n行m列的矩阵,‘m‘表示mzc,‘d’表示男家丁,‘#’表示不能走,‘.‘表示空地。

     

    输出格式:

     

    一行,若有解:一个数sum,表示找到男家丁的最短移动次数。

    若无解:输出“No Way!”。

    输入输出样例

    输入样例#1: 复制
    5 6
    .#..#.
    ....#.
    d.....
    #####.
    m.....
    
    输出样例#1: 复制
    12

    说明

    3=<M,n<=2000

    由于mzc大大十分着急,所以他只能等待1S。

    突然对dfs好失望啊。。。

    哎,,何时才能真正掌握强大的bfs呢。。。

    bfs代码:

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    
    int n,m,sx,sy,head,tail; 
    int q[2002*2002][3],dis[2002][2002];
    int xx[]={0,1,0,-1},yy[]={1,0,-1,0};
    char a[2002][2002];
    bool vis[2002][2002];
    
    int main()
    {	
    	scanf("%d%d",&n,&m);
    	for(int i=1;i<=n;++i)
    		for(int j=1;j<=m;++j)
    		{
    			cin>>a[i][j];
    			if(a[i][j]=='m')
    				sx=i,sy=j;
    			if(a[i][j]=='#')
    				vis[i][j]=1;
    		}	
    	q[tail][1]=sx,q[tail][2]=sy;
    	tail++;
    	memset(dis,0x3f,sizeof(dis));
    	dis[sx][sy]=0;
    	while(head<tail)
    	{
    		int x=q[head][1],y=q[head][2];
    		if(a[x][y]=='d')
    		{
    			printf("%d",dis[x][y]);
    			return 0;
    		}
    		head++;
    		for(int i=0;i<4;++i)
    		{
    			int dx=x+xx[i],dy=y+yy[i];
    			if(dx>0&&dx<=n&&dy>0&&dy<=m&&!vis[dx][dy])
    				if(dis[dx][dy]>dis[x][y]+1)
    				{
    					dis[dx][dy]=dis[x][y]+1;
    					q[tail][1]=dx;
    					q[tail][2]=dy;
    					tail++;
    				}					
    		}
    	}
    	printf("No Way!");
    	return 0;
    }

    如果你不开心,那我就把右边这个帅傻子分享给你吧,  

    你看,他这么好看,那么深情的望着你,你还伤心吗?  

    真的!这照片盯上他五秒钟就想笑了。  

    一切都会过去的。  

  • 相关阅读:
    Java8部分新特性的学习
    SurfaceView的基本使用
    Android Apk的反编译和加密
    Notification的基本用法以及使用RemoteView实现自定义布局
    Anroid事件分发
    Xmpp学习之Asmack取经-asmack入门(一)
    android通过DialogFragment实现时间选择
    使用官方Android-support-v7在低版本上使用ActionBarActivity
    五一后总结
    Android在有存储卡和无存储卡情况下拍照后固定尺寸和压缩大小
  • 原文地址:https://www.cnblogs.com/Mary-Sue/p/9682100.html
Copyright © 2020-2023  润新知