⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3083.cpp

📁 pku acm上的3083源代码
💻 CPP
字号:
#include<iostream>
using namespace std;
struct point{
    int x;
    int y;
};
char G[41][41];
bool find = false;
point start;
int w, h ,num;
//第三维为人所朝的方向 
int move[4][4][2]={{{-1,0},{0,1},{1,0},{0,-1}},{{0,1},{1,0},{0,-1},{-1,0}},{{1,0},{0,-1},{-1,0},{0,1}},{{0,-1},{-1,0},{0,1},{1,0}}};

void DFS_Visit(point now, int face)
{
    int i, x, y;
    point k;
    for(i=0; i<=3; i++)
    {
        x = now.x+move[face][i][0];
        y = now.y+move[face][i][1];
        if(G[x][y] == 'E')
        {
            //find = true;
            break;
        }
        if(x>=1 && y>=1 && x<=w && y<=h && G[x][y] == '.')
        {
            num++;
            k.x = x;
            k.y = y;
            DFS_Visit(k, i);
        }
    }
}

void DFS(int face)
{
    DFS_Visit(start, face);
}


int main()
{
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
    int cases, i, j, k, face;
    scanf("%d",&cases);
    for(i=1; i<=cases; i++)
    {
        scanf("%d%d",&w, &h);
        for(j=1; j<=h; j++)
        {
            for(k=1; k<=w; k++)
                scanf("%c", &G[j][k]);
            if(G[j][k] == 'S')
            {
                start.x = k;
                start.y = j;
                if(j == 1)
                    face = 0;
                else if(j == h)
                    face = 2;
                else if(k == 1)
                    face = 1;
                else if(k == w)
                    face = 3;
            }
        }
        DFS(face);
    } 
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -