acgo题库
  • 首页
  • 题库
  • 题单
  • 竞赛
  • 讨论
  • 排行
  • 团队
  • 备赛专区

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
登录
注册
题目详情题解(0)讨论(0)提交记录(0)
  • 题解(深度优先搜索)

    #include<bits/stdc++.h> using namespace std; int n,m; int sx,sy,fx,fy; char a[50][50]; bool vis[50][50]; int dir_x[4]={-1,1,0,0}; int dir_y[4]={0,0,-1,1}; bool check(int x,int y){ return x>=1&&x<=n&&y>=1&&y<=m&&a[x][y]'.'&&vis[x][y]0; } void dfs(int x,int y){ if(xfx&&yfy) return ; for(int i=0;i<4;i++){ int nx=x+dir_x[i]; int ny=y+dir_y[i]; if(check(nx,ny)){ vis[nx][ny]=1; dfs(nx,ny); } } } int main(){ cin>>n>>m; cin>>sx>>sy>>fx>>fy; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>a[i][j]; } } vis[sx][sy]=1; dfs(sx,sy); if(vis[fx][fy]==1) cout<<"YES"; else cout<<"NO"; return 0; }

    userId_undefined

    c++王子

    循环·循环打卡人
    0阅读
    0回复
    0点赞

共21条

  • 1
  • 2
20条/页
跳至页
首页