比赛 初一开训小练习 评测结果 AAAAAAAAAA
题目名称 最长滑坡 最终得分 100
用户昵称 PigFlies 运行时间 0.589 s
代码语言 C++ 内存使用 4.77 MiB
提交时间 2026-03-10 20:47:51
显示代码纯文本
#include <iostream>
using namespace std;
int dirx[4]={0,0,-1,1};
int diry[4]={-1,1,0,0};
int map[510][510];
int longest[510][510];
int r,c,ans=0,mx,my;
void dfs(int nx,int ny,int lenth)
{
    lenth++;
    if(lenth<=longest[ny][nx])return;
    else longest[ny][nx]=lenth;
    ans=max(ans,lenth);
    for(int t=0;t<4;t++)
    {
        mx=nx+dirx[t],my=ny+diry[t];
        if(mx>=0&&mx<c&&my>=0&&my<r)
        {
            if(map[my][mx]<map[ny][nx])dfs(mx,my,lenth);
        }
    }
}
int main()
{
    freopen("shunzhi.in","r",stdin);
    freopen("shunzhi.out","w",stdout);
    cin>>r>>c;
    for(int i=0;i<r;i++)
    {
        for(int j=0;j<c;j++)
        {
            cin>>map[i][j];
        }
    }
    for(int i=0;i<r;i++)
    {
        for(int j=0;j<c;j++)
        {
            dfs(j,i,0);
        }
    }
    cout<<ans<<endl;
    return 0;
}