csu 1562: Fun House (DFS)

来源:互联网 发布:驱动程序软件安装设置 编辑:程序博客网 时间:2024/06/05 08:35

1.'\\'代表一个斜杠

#include<cstdio>#include<cstring>using namespace std;int l,w;char map[25][25];int ansx,ansy;int flag;int dir[4][2]= {0,1,1,0,-1,0,0,-1};void DFS(int x,int y,int d){    int tx=x+dir[d][0];    int ty=y+dir[d][1];    if(!flag&&map[tx][ty]=='.')        DFS(tx,ty,d);    if(!flag&&map[tx][ty]=='x')    {        flag=1;        ansx=tx;        ansy=ty;        return;    }    if(!flag&&map[tx][ty]=='/'&&d==1)        DFS(tx,ty,3);    if(!flag&&map[tx][ty]=='/'&&d==0)        DFS(tx,ty,2);    if(!flag&&map[tx][ty]=='/'&&d==3)        DFS(tx,ty,1);    if(!flag&&map[tx][ty]=='/'&&d==2)        DFS(tx,ty,0);    if(!flag&&map[tx][ty]==92&&d==0)        DFS(tx,ty,1);    if(!flag&&map[tx][ty]==92&&d==1)        DFS(tx,ty,0);    if(!flag&&map[tx][ty]==92&&d==2)        DFS(tx,ty,3);    if(!flag&&map[tx][ty]==92&&d==3)        DFS(tx,ty,2);}int main(){    int k=0;    while(scanf("%d%d",&w,&l),w||l)    {        memset(map,0,sizeof(map));        for(int i=1; i<=l; i++)        {            scanf("%s",map[i]+1);        }        flag=0;        int t=0;        for(int i=1; i<=l; i++)        {            for(int j=1; j<=w; j++)            {                if(map[i][j]=='*'&&j==1)                {                    DFS(i,j,0);                    t=1;                    break;                }                if(map[i][j]=='*'&&i==1)                {                        DFS(i,j,1);                        t=1;                    break;                }                if(map[i][j]=='*'&&i==l)//把i==l中的i错写成j,居然测试数据都能过,花了大把的白花花的青春那                {                    DFS(i,j,2);                    t=1;                    break;                }                if(map[i][j]=='*'&&j==w)                {                    DFS(i,j,3);                    t=1;                    break;                }            }            if(t)                break;        }        map[ansx][ansy]='&';        printf("HOUSE %d\n",++k);        for(int i=1; i<=l; i++)        {            printf("%s\n",map[i]+1);        }    }    return 0;}


0 0
原创粉丝点击