Salvation -- ---广搜 + 限定方向 ,

这个欣求 , 在迷宫里密室了方向 , 走过了一个地方 不做标记 还一个劲 , 找不到媳妇不亏 .

这个题 我跳了两个坑 ,  1 : 习惯性添加标记走过的 位置  ,导致所有的位置都能 走过一遍 ,  2 : 转弯的时候  变换面部朝向

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<iostream>
#include<algorithm>
#include<queue>
#include<vector>
#include<set>
#include<stack>
#include<string>
#include<sstream>
#include<map>
#include<cctype>
using namespace std;
char a[105][105],T;
int b[4][2]={-1,0,0,-1,1,0,0,1},n,m,t,time1[105][105],mark/*,visited[105][105]*/;    //按照  左上右下的顺序
void DFS(int x,int y,int q)
{
    for(int i=0;i<4&&time1[y][x]<4&&!mark;i++)   //同一个点最多前后左右四次
    {
        time1[y][x]++;
        int ac=(i+q)%4;
        if(!mark&&x+b[ac][0]>=0&&y+b[ac][1]>=0&&y+b[ac][1]<n&&x+b[ac][0]<m&&a[y+b[ac][1]][x+b[ac][0]]!='#'/*&&!visited[y+b[ac][1]][x+b[ac][0]]*/)
        {
         //   visited[y+b[ac][1]][x+b[ac][0]]=1;
            if(a[y+b[ac][1]][x+b[ac][0]]=='X')
            {
                mark=1;
                break;
            }
            a[y+b[ac][1]][x+b[ac][0]]='@';
            DFS(x+b[ac][0],y+b[ac][1],q);       
            return ;                            //  因为会 迷失方向  所以 一条路走到底 之后 没路走了 ( 进了死胡同 )
         //   visited[y+b[ac][1]][x+b[ac][0]]=0;  // 就    直接去死吧 .
        }
    }
}
int main()
{
    int x,y;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            {
                scanf(" %c",&a[i][j]);
                if(a[i][j]=='T')
                {
                    x=j;
                    y=i;
                }
            }
        }
        scanf(" %c",&T);
        switch(T)
        {
            case'N':t=0;break;  //  面朝北的话  向左走
            case'S':t=2;break;
            case'W':t=3;break;
            case'E':t=1;break;
        }
        memset(time1,0,sizeof(time1));
       // memset(visited,0,sizeof(visited));
        mark=0;
        DFS(x,y,t);
        if(mark)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}

 

posted @ 2016-04-08 12:56  X-POWER  阅读(154)  评论(0编辑  收藏  举报