[OpenJudge-NOI]滑雪 记忆化搜索+Dp

来源:互联网 发布:辣条骚男淘宝 编辑:程序博客网 时间:2024/05/21 10:40

代码

#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;int r,c,mat[105][105],cnt[105][105],dir[4][2]={{1,0},{-1,0},{0,-1},{0,1}},ans(0);int dp(int i,int j){    int maxx=0;    if(cnt[i][j]>0){        return cnt[i][j];    }    for(int z=0;z<4;z++){        int x=i+dir[z][0],y=j+dir[z][1];        if(x>0&&y>0&&x<=r&&y<=c){            int t=mat[x][y];            if(mat[i][j]>t){                maxx=max(maxx,dp(x,y));            }                           }    }    cnt[i][j]=maxx+1;    return cnt[i][j];}int main() {    cin>>r>>c;    for(int i=1;i<=r;i++){        for(int j=1;j<=c;j++){            cin>>mat[i][j];        }    }    for(int i=1;i<=r;i++){        for(int j=1;j<=c;j++){            dp(i,j);        }    }       for(int i=1;i<=r;i++){        for(int j=1;j<=c;j++){            ans=max(ans,cnt[i][j]);        }    }           cout<<ans<<endl;}
0 0