3 条题解

  • 0
    @ 2023-3-21 20:24:38

    #include <bits/stdc++.h> using namespace std; int n,m; int dx[4]={0,0,1,-1}; int dy[4]={1,-1,0,0}; struct temp { int x,y,step; }; queue q; char a[105][105]; int vis[105][105]; void bfs(int xx,int yy) { while(!q.empty()) { temp k=q.front(); if(a[k.x][k.y]'T') { cout<<k.step<<endl; return ; } q.pop(); if(vis[k.x][k.y]) { continue; } vis[k.x][k.y]=1; for(int i=0;i<4;i++) { int tx=k.x+dx[i],ty=k.y+dy[i]; if(tx>=0&&ty>=0&&tx<n&&ty<m&&!vis[tx][ty]&&a[tx][ty]!='#') { q.push({tx,ty,k.step+1}); } } } } int main() { scanf("%d%d",&n,&m); for(int i=0;i<n;i++) { cin>>a[i]; } for(int i=0;i<n;i++) { for(int j=0; j<m; j++) { if(a[i][j]'S') { q.push({i,j,0}); bfs(i,j); return 0; } } } return 0; }

    • -1
      @ 2022-10-6 11:18:53
      #include <bits/stdc++.h>
      using namespace std;
      int n,m;
      int dx[4]={0,0,1,-1};
      int dy[4]={1,-1,0,0};
      struct temp 
      {
          int x,y,step;
      };
      queue<temp> q;
      char a[105][105];
      int vis[105][105];
      void bfs(int xx,int yy) 
      {
          while(!q.empty()) 
      	{
              temp k=q.front();
              if(a[k.x][k.y]=='T') 
      		{
                  cout<<k.step<<endl;
                  return ;
              }
              q.pop();
              if(vis[k.x][k.y])
              {
              	continue;
      		}       
              vis[k.x][k.y]=1;
              for(int i=0; i<4; i++) 
      		{
                  int tx=k.x+dx[i],ty=k.y+dy[i];
                  if(tx>=0&&ty>=0&&tx<n&&ty<m&&!vis[tx][ty]&&a[tx][ty]!='#') 
      			{
                      q.push({tx,ty,k.step+1});
                  }
              }
          }
      }
      int main() 
      {
          scanf("%d%d",&n,&m);
          for(int i=0; i<n; i++) 
      	{
              cin>>a[i];
          }
          for(int i=0; i<n; i++) 
      	{
              for(int j=0; j<m; j++) 
      		{
                  if(a[i][j]=='S') 
      			{
                      q.push({i,j,0});
                      bfs(i,j);
                      return 0;
                  }
              }
          }
          return 0;
      }
      
      • -4
        @ 2022-10-6 15:02:16

        #include<bits/stdc++.h> using namespace std; bool pd; char a[101][101]; int b[101][101],k[4][2]={{1,0},{-1,0},{0,1},{0,-1}},n,m,h=1,t=1,sx,sy,ex,ey; struct que{ int x; int y; int bs; }; int main(){ struct que dl[100000]; cin>>n>>m; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++){ cin>>a[i][j]; if(a[i][j]'S'){ sx=i; sy=j; } if(a[i][j]'T'){ ex=i; ey=j; } } //cin>>sx>>sy>>ex>>ey; b[1][1]=1; dl[t].x=sx; dl[t].y=sy; dl[t].bs=0; t++; while(h<t){ for(int i=0;i<4;i++){ int tx=dl[h].x+k[i][0],ty=dl[h].y+k[i][1]; if(tx<1||tx>n||ty<1||ty>m)continue; else if(a[tx][ty]'#'||b[tx][ty]1)continue; else{ b[tx][ty]=1; dl[t].x=tx; dl[t].y=ty; dl[t].bs=dl[h].bs+1; t++; } if(txex&&tyey){ pd=1; cout<<dl[t-1].bs; break; } }

        h++;
        }
        return 0;
        

        }

        • 1

        信息

        ID
        430
        时间
        1000ms
        内存
        128MiB
        难度
        5
        标签
        递交数
        102
        已通过
        37
        上传者