zoukankan      html  css  js  c++  java
  • hdu 2102 A计划

    搜索的题就是要细心

    #include<stdio.h>
    #include<string.h>
    #include<queue>
    #define inf 0x3fffffff
    using namespace std;
    int vis[2][11][11];
    char map[2][11][11];
    int n,m,T;
    int dir[4][2]={0,1,1,0,0,-1,-1,0};
    struct op
    {
    	int k,x,y,step;
    };
    int judge(int k,int x,int y)
    {
    	if(x<0||x>=n||y<0||y>=m||map[k][x][y]=='*')
    		return 0;
    	return 1;
    }
    int bfs()
    {
    	int i,x,y,step,k;
    	queue<op>Q;
    	op cur,next;
    	cur.k=0;
    	cur.x=0;
    	cur.y=0;
    	cur.step=0;
    	Q.push(cur);
    	vis[0][0][0]=0;
    	while(!Q.empty())
    	{
    		cur=Q.front();
    		Q.pop();
    		if(cur.step>T)continue;
    		if(map[cur.k][cur.x][cur.y]=='P')
    			return cur.step;
    		
    		for(i=0;i<4;i++)
    		{
    			x=cur.x+dir[i][0];
    			y=cur.y+dir[i][1];
    			k=cur.k;
    			step=cur.step+1;
    			
    			if(map[k][x][y]=='#')
    			{
    				k=(k+1)%2;
    				if(map[k][x][y]=='#'||map[k][x][y]=='*')
    					continue;
    			}
    			if(judge(k,x,y)==0)continue;
    			if(vis[k][x][y]>step)
    			{
    				vis[k][x][y]=step;
    				next.k=k;
    				next.step=step;
    				next.x=x;
    				next.y=y;
    				Q.push(next);
    			}
    		}
    	}
    	return -1;
    }
    int main()
    {
    	int t,i,j,p;
    	scanf("%d",&t);
    	while(t--)
    	{
    		for(i=0;i<2;i++)
    			for(j=0;j<11;j++)
    				for(p=0;p<11;p++)
    					vis[i][j][p]=inf;
    		scanf("%d%d%d",&n,&m,&T);
    		for(i=0;i<n;i++)
    			scanf("%s",map[0][i]);
    		for(i=0;i<n;i++)
    			scanf("%s",map[1][i]);
    		j=bfs();
    		if(j==-1)
    			puts("NO");
    		else puts("YES");
    	}
    	return 0;
    }
    
    


     

  • 相关阅读:
    Python3 函数return
    Python3 函数参数
    计算机组成原理基础
    解决 Python2 和 Python3 的共存问题
    管理本地用户和组
    Linux 常用命令(二)
    Linux 控制台
    Linux 常用命令(一)
    Linux中的目录功能(Red Hat 7)
    自定义属性使用
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3061757.html
Copyright © 2011-2022 走看看