poj1088 滑雪(简单dp)

来源:互联网 发布:大学生开淘宝网店 编辑:程序博客网 时间:2024/05/22 10:22

题目链接:http://poj.org/problem?id=1088
简单的搜索一遍就ok

#include<iostream>#include<algorithm>#include<cstring>using namespace std;int Div[4][2]={{-1,0},{0,-1},{0,1},{1,0}};int len[105][105];int maze[105][105];int r,c;int dp(int x,int y){    if(len[x][y]!=0)return len[x][y];    int maxx=0,s;    for(int i=0;i<4;i++)    {        int tempx=x+Div[i][0];        int tempy=y+Div[i][1];        if(tempx>=0&&tempx<r&&tempy>=0&&tempy<c&&maze[tempx][tempy]<maze[x][y])        {            s=dp(tempx,tempy);            if(s>maxx)maxx=s;        }    }    len[x][y]=maxx+1;    return maxx+1;}int main(){    //int r,c;    while(cin>>r>>c)    {        for(int i=0;i<r;i++)        {            for(int j=0;j<c;j++)            {                cin>>maze[i][j];            }        }        memset(len,0,sizeof(len));        int maxx=0;        for(int i=0;i<r;i++)        {            for(int j=0;j<c;j++)            {                maxx=max(maxx,dp(i,j));            }        }        cout<<maxx<<endl;    }    return 0;}
0 0
原创粉丝点击