DFS是否还能优化,30分,都是TLE。DFS和BFS适用场景都是什么欸?
查看原帖
DFS是否还能优化,30分,都是TLE。DFS和BFS适用场景都是什么欸?
755222
Lawate楼主2023/3/16 21:57
#include<iostream>
using namespace std;
int n,m,first;
int q=-1,w=-1;
int sta[2001][2001];
char a[2001][2001];
int dx[4]={0,1,-1,0};
int dy[4]={1,0,0,-1};
void dfs(int x,int y,int t)
{
    sta[x][y]=t;
    if(a[x][y]=='d')
    {
        if(first==0)//第一次找到
        {
            q=x;
            w=y;
        }
        first++;
        return;
    }
    for(int i=0;i<4;i++)
    {
        int xx=x+dx[i];
        int yy=y+dy[i];
        if(xx<0||xx>=n||yy<0||yy>=m)
        {
            continue;
        }
        if(a[xx][yy]=='#')
        {
            continue;
        }
        if(sta[xx][yy]==0||sta[xx][yy]>t+1)
        {
            dfs(xx,yy,t+1);
        }
    }
}
int main()
{
    cin>>n>>m;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            cin>>a[i][j];
        }
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            if(a[i][j]=='m')
            {
                dfs(i,j,0);
            }
        }
    }
    if(q==-1&&w==-1)
    {
        cout<<"No Way!";
        return 0;
    }
    cout<<sta[q][w];
    return 0;
}

感谢大佬!

2023/3/16 21:57
加载中...