求解用了记忆化搜索第二个点还是t了

P1434 [SHOI2002] 滑雪

zhaoyoulan @ 2019-07-10 16:06:53

#include<iostream>
using namespace std;
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
int map[110][110];//记录高度 
int ans[110][110];//记录到i,j这一点最长滑道 
int r,c;
void dfs(int x,int y,int bu)// 
{
    for(int i=0;i<=3;i++)
        if(x+dx[i]>0&&x+dx[i]<=r&&dy[i]+y>0&&dy[i]+y<=c&&map[x][y]>map[x+dx[i]][y+dy[i]]&&bu+1>ans[x+dx[i]][y+dy[i]])//判断不越界和下一步走的能比原来的长 
        {
            ans[x+dx[i]][y+dy[i]]=bu+1;
            dfs(x+dx[i],dy[i]+y,bu+1);
        }
}
int main()
{
    cin>>r>>c; 
    for(int i=1;i<=r;i++)
        for(int j=1;j<=c;j++)
            cin>>map[i][j];
    for(int i=1;i<=r;i++)
        for(int j=1;j<=c;j++)
            ans[i][j]=1;    //每个点都搜 
    for(int i=1;i<=r;i++)
        for(int j=1;j<=c;j++)
            dfs(i,j,1);
    int mx=0;
    for(int i=1;i<=r;i++)
        for(int j=1;j<=c;j++)
            if(ans[i][j]>mx)
                mx=ans[i][j];
    cout<<mx;
}

qwq摆脱各位dalao了


by pzc2004 @ 2019-07-10 16:10:55

把cin,cout改成scanf,printf


by zhaoyoulan @ 2019-07-10 21:57:57

@wemspzc 换成快读了,555还是不行


by 2934729ASA @ 2019-07-16 11:12:39

巧了我也是记忆化搜索第二个点TLE


|