判断迷宫出路

来源:互联网 发布:达芬奇调色软件价格 编辑:程序博客网 时间:2024/05/21 09:25

这里写图片描述
题目链接

题目分析

思路

深度优先探索

分析

将WA变为AC
1、因为输入中有字符,在每输入一行要回车的地方(会产生回车符)添加getchar(),吃掉回车符。
2、将return df(d1,d2);
改为if(df(d1,d2)) return true;

代码

#include<stdio.h>#include<string.h>using namespace std;char a[25][25];int flag[25][25];int dd[4][2]={{1,0},{0,1},{-1,0},{0,-1}};bool df(int x,int y){     for(int i=0;i<4;i++){//遍历上下左右4个点         int d1=x+dd[i][0];        int d2=y+dd[i][1];        if(a[d1][d2]=='.'&&flag[d1][d2]==0&&a[d1][d2]!='#'){//可通过             flag[d1][d2]=1;//标记为已走             if(df(d1,d2)) //return df(d1,d2);会wa                return  true;                 }        if(a[d1][d2]=='@')//终点             return true;    }    return false;}int main(){    int m,n,s1,s2;    int T;    scanf("%d",&T);    getchar();//吃回车符     while(T--){        scanf("%d%d",&n,&m);        getchar();//吃回车符        memset(flag,0,sizeof(flag));        memset(a,'#',sizeof(a));        for(int i=1;i<=m;i++){            for(int j=1;j<=n;j++){                scanf("%c",&a[i][j]);                if(a[i][j]=='s'){//起点                     s1=i;                    s2=j;                }            }            getchar();//吃回车符         }        if(df(s1,s2))            printf("yes\n");        else             printf("no\n");    }    return 0;}
0 0
原创粉丝点击