哥谭怪瘦 2023-03-14 19:23 采纳率: 50%
浏览 24

#.迷宫问题.dfs.

最近在学迷宫问题,这个解法是在网上学的,针对题目做了一点修改但不知道哪错了

#include<iostream>
using namespace std;
int m,n,p,q,minx=99;
char a[100][100];//'.'表示空地,#表示障碍物 
int v[100][100];//0表示未访问,1表示访问 
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0}; 
void dfs(int x,int y,int step)
{
    if(x==p && y==q){
        if(step<minx) minx=step;
        return ;
    }
    for(int k=0;k<=3;k++){
        int tx,ty;
        tx=x+dx[k];
        ty=y+dy[k];
        if(a[tx][ty]=='.' && v[tx][ty]==0){
            v[tx][ty]=1;
            dfs(tx,ty,step+1);
            v[tx][ty]=0;
        }
    }
}
int main()
{
    int startx,starty;
    scanf("%d %d",&m,&n);
    for(int i=1;i<=m;i++){
        for(int j=1;j<=n;j++){
            scanf("%c",&a[i][j]);
            if(a[i][j]=='@'){
                startx=i;
                starty=j;
            } 
            if(a[i][j]=='*'){
                p=i;
                q=j;
            }
        }
    }
    v[startx][starty]=1;
    dfs(startx,starty,0);
    printf("%d",minx);    
    return 0;    
}

少年李逍遥的婶婶病了,王小虎介绍他去一趟仙灵岛,向仙女**要仙丹救婶婶。叛逆但孝顺的李逍遥闯进了仙灵岛,克服了千险万难来到岛的中心,发现仙药摆在了迷阵的深处。迷阵由

×

M×N 个方格组成,有的方格内有可以瞬秒李逍遥的怪物,而有的方格内则是安全。现在李逍遥想尽快找到仙药,显然他应避开有怪物的方格,并经过最少的方格,而且那里会有神秘人物等待着他。现在要求你来帮助他实现这个目标。

输入格式
第一行输入两个非零整数

M 和

N,两者均不大于
20
20。

M 表示迷阵行数,

N 表示迷阵列数。

接下来有

M 行, 每行包含

N 个字符,不同字符分别代表不同含义:

  1. '@':少年李逍遥所在的位置;2) '.':可以安全通行的方格;3) '#':有怪物的方格;4) '*':仙药所在位置。

输出格式
输出一行,该行包含李逍遥找到仙药需要穿过的最少的方格数目(计数包括初始位置的方块)。如果他不可能找到仙药, 则输出

1
−1。

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-03-14 23:04
    关注
    评论

报告相同问题?

问题事件

  • 创建了问题 3月14日

悬赏问题

  • ¥20 ESP32使用MicroPyhon开发,怎么获取485温湿度的值,温湿度计使用的鞋子是Modbus RTU
  • ¥50 苹果MGIE项目部署缺少emb权重
  • ¥15 采用ansys进行机翼在特定路径下的打孔过程中的受力分析
  • ¥15 单片机adb主机连接手机,usb调试密钥无法保存
  • ¥15 已知X和Y有以下关系,求X和Y的关系式
  • ¥15 net core 同时编辑怎么防止数据多保存了
  • ¥15 matlab做ba模型让其在ba和er规则下生长
  • ¥15 请问Quartus的Verilog代码怎么写?
  • ¥100 Mac 版foxmail 收邮件问题
  • ¥15 QWebEngineView