求助,90分。

P1434 [SHOI2002] 滑雪

哇咔咔冲啊 @ 2018-11-24 16:41:23

#include<iostream>
using namespace std;
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
long long f[1001][1001],m[1001][1001],mm,n,k,tmp,ans=0,t,nx,ny;
int search(int x,int y);
int main(){
    cin>>n>>mm;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=mm;j++){
            cin>>m[i][j];
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=mm;j++){
            k=search(i,j);
            f[i][j]=k;
            ans=max(ans,k);
        }
    }
    cout<<ans<<endl;
    return 0;
}
int search(int x,int y){
    if(f[x][y]>0){
        return f[x][y];
    }
    t=1;
    for(int i=0;i<4;i++){
        nx=x+dx[i];
        ny=y+dy[i];
        if(nx>=1&&nx<=n&&ny>=1&&ny<=mm&&m[x][y]<m[nx][ny]){
            tmp=search(nx,ny)+1;
            t=max(t,tmp);
        }
    }
    f[x][y]=t;
    return t;
}

RT


by X_WT @ 2018-12-05 13:14:51

t在搜索的时候是不是会不停地更新……

t=1;之前加上一个int
就是
int t=1;

by X_WT @ 2018-12-05 13:15:43

好吧此贴已经作废(楼主A掉这题了)


by 哇咔咔冲啊 @ 2018-12-09 12:32:22

谢谢大佬(没有作废,因为我换了个法A的)


|