dfswa了一个点,求助!

P1434 [SHOI2002] 滑雪

鹿目圆 @ 2021-06-24 08:58:26

#include<iostream>
using namespace std;
int r,c;
int snow[114][114];
int step[114][114];
bool vis[114][114];
int tox[4]={0,0,-1,1};
int toy[4]={1,-1,0,0};
int maxn;
int maxnn=-1e9;
void dfs(int x,int y,int ans)
{
    for(int i=0;i<4;i++)
    {
        int xx=x+tox[i];
        int yy=y+toy[i];
        if(snow[xx][yy]>=snow[x][y]||xx==0||yy==0) continue;
        if(step[xx][yy]) 
        {
            maxn=max(maxn,step[xx][yy]+ans);
            continue;
        }
        if(xx&&yy) 
        {
            dfs(xx,yy,ans+1);
        }
    }
    maxn=max(maxn,ans);
    return;
} 
int main()
{
    cin>>r>>c;
    for(int i=1;i<=r;i++)
    {
        for(int j=1;j<=c;j++)
        {
            cin>>snow[i][j];
        }
    }
    for(int i=1;i<=r;i++)
    {
        for(int j=1;j<=c;j++)
        { 
            maxn=-1e9;
            dfs(i,j,1);
            step[i][j]=maxn;
            if(maxnn<maxn) maxnn=maxn;
        }
    }
    cout<<maxnn;
    return 0;
}

by Echidna @ 2021-06-24 09:27:48

你边界没判全

需要将

if(snow[xx][yy]>=snow[x][y]||xx==0||yy==0) continue;

改为

if(snow[xx][yy]>=snow[x][y]||xx==0||yy==0||xx>r||yy>c) continue;

改了之后一遍过了。

另外,名字不错


by Echidna @ 2021-06-24 10:16:17

@鹿目圆


by 鹿目圆 @ 2021-06-24 10:23:04

@某学oi的蒟蒻 终于过了!!谢谢大佬www


by 范·达克霍姆 @ 2021-07-06 10:26:10

鹿目圆


by 鹿目圆 @ 2021-09-07 17:02:52

@范·达克霍姆 宋太祖弄伤了娘


|