TLE了一个点,大佬能不能帮忙看看

P1434 [SHOI2002] 滑雪

QAQ永动机 @ 2019-04-05 12:10:19

#include<bits/stdc++.h>
using namespace std;

int n,m;
int a[200][200];
int b[200][200];
int maxx=1;
int dir[5][4]={{0,1},{0,-1},{-1,0},{1,0}};

void dfs(int x,int y,int step)
{
    int nx,ny;
    if(step>maxx){
        maxx=step;
    }
    for(int i=0;i<4;i++)
    {
        nx=x+dir[i][1];
        ny=y+dir[i][0];

        if(nx>n||nx<1||ny>m||ny<1||a[nx][ny]>=a[x][y])
        {
            continue;
        }

        if(b[nx][ny]<step+1)
        {
            b[nx][ny]=step+1;
            dfs(nx,ny,step+1);
        }

    }
}

int main()
{
    cin>>n>>m;

    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            cin>>a[i][j];

    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            dfs(i,j,1);
        }   
    }
    cout<<maxx;

    return 0;
}

TLE了QAQ

还有我

        if(b[nx][ny]<step+1)
        {
            b[nx][ny]=step+1;
            dfs(nx,ny,step+1);
        }

这部分有没有起到优化作用啊,为什么感到没用啊


by aminoas @ 2020-03-30 18:27:23

考古qwq

居然是 yoha >_<


|