• 临时16




    #include<iostream>
    using namespace std;
    #include<string.h>
    #define max 105
    long a[100000],step,sum,n,m,visited[max][max];
    long directions[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
    int mxr;
    struct map{
    	int turn;
    	char value;
    	int now;//记录转过几次
    }map[max][max];
    void DFS(int x,int y)
    {
        int i,mx,my;
    
    	if(map[x][y].value=='r')
            a[sum++]=step;
    
    	else if(map[x][y].value!='#')
        {
    
            for(i=0;i<4;i++)
            {
                mx=x+directions[i][0];
                my=y+directions[i][1];
    
    
    			if(map[mx][my].value!='#'&&mx>=1&&mx<=n&&my>=1&&my<=m&&!visited[mx][my])//不是墙并且没走过
                {
                    
                    step++;
                    visited[mx][my]=1;
    
                   DFS(mx,my); //所以关键要得到值的是递归的这一步  推导的时候让这个的下一个DFS就是到达朋友那点比较好理解为什么后面要还原
    
                    visited[mx][my]=0;//这一步的原因,上面DFS进行完后要将状态还原
                    step--;           //下面这些都要还原
                  
    
    
                }
            }
        }
    }
    
    
    
    
    int main()
    {
    
        long i,j,x,y,min;
        while(cin>>n>>m)
        {
    
            memset(visited,0,sizeof(visited));
            sum=0;
            step=0;
            min=max;
    
            for(i=1;i<=n;i++)
            {
                
                for(j=1;j<=m;j++)
                {
    				cin>>map[i][j].value;
    				map[i][j].turn=-1;
    				map[i][j].now=0;
                   
                }
            }
    		cin>>mxr;
    		int x1,y1,x2,y2;
    		cin>>x1>>y1>>x2>>y2;
            visited[x1][y1]=1;
    		map[x2][y2]='r';
            DFS(x,y);
    
            if(sum==0)
                cout<<"Poor ANGEL has to stay in the prison all his life."<<endl;
            else
            {
                for(i=0;i<sum;i++)
                    if(a[i]<min)
                        min=a[i];
                cout<<min<<endl;
    
            }
    
        }
        return 0;
    }
    


    版权声明:本文为博主原创文章,未经博主允许不得转载。

    today lazy . tomorrow die .
  • 相关阅读:
    crontab 实际的应用
    php 求素数的二种方法
    linux svn配置hooks
    php执行超时(nginx,linux环境)
    php使用strpos,strstr,strchr注意啦,若是数字查找则会当成ASCII码处理
    php 处理大文件方法 SplFileObject
    高德地图定位
    jquery 实现鼠标点击div盒子移动功能
    centos 安装php缓存 apc或zend-opcode
    phpQuery用法总结
  • 原文地址:https://www.cnblogs.com/france/p/4808633.html
Copyright © 2020-2023  润新知