社区讨论

30分 只过了1 2 5 为什么呢

P1238走迷宫参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mi6ha07d
此快照首次捕获于
2025/11/20 04:51
4 个月前
此快照最后确认于
2025/11/20 04:51
4 个月前
查看原帖
CPP
#include<iostream>
using namespace std;
int m,n;
int map[20][20];
int a[100][3];//当前所在位置 
int vis[20][20];
int dx[5]={0,0,1,0,-1};
int dy[5]={0,1,0,-1,0};
int sx,sy,fx,fy;
int num;
void print(int step)
{
    for(int i=1;i<=step-1;i++)
    {
        cout<<"("<<a[i][1]<<","<<a[i][2]<<")"<<"->";
    }
    cout<<"("<<fx<<","<<fy<<")"<<endl;
}
void dfs(int step)
{
    if(a[step-1][1]==fx && a[step-1][2]==fy)
    {
        num++;
        print(step-1);
    }
    else 
      for(int i=1;i<=4;i++)
      {
          int x=a[step-1][1]+dx[i];
        int y=a[step-1][2]+dy[i];
          if(x>=1 && x<=n && y>=1 && y<=m && vis[x][y]==0 && map[x][y]==1)
          {
              vis[x][y]=1;
              a[step][1]=x;
              a[step][2]=y;
              dfs(step+1);
              vis[x][y]=0;
          }
      }
}
int main()
{
    cin>>m>>n;
    for(int i=1;i<=m;i++)
     for(int j=1;j<=n;j++)
     cin>>map[i][j];
    cin>>sx>>sy>>fx>>fy;
    a[1][1]=sx;a[1][2]=sy;
    vis[sx][sy]=1;
    dfs(2);
    if(num==0) cout<<"-1"; 
    return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...