poj 1088 滑雪_记忆化搜索
题意:略
直接用记忆化搜索就行了
#include<cstdio> #include<iostream> using namespace std; int n,m; int map[105][105]; int len[105][105]={0}; int dp(int x,int y) { int max,temp; if(len[x][y]) return len[x][y]; max=0; if(x+1<n&&map[x][y]>map[x+1][y]) { temp=dp(x+1,y)+1; if(max<temp) max=temp; } if(x-1>=0&&map[x][y]>map[x-1][y]) { temp=dp(x-1,y)+1; if(max<temp) max=temp; } if(y+1<m&&map[x][y]>map[x][y+1]) { temp=dp(x,y+1)+1; if(max<temp) max=temp; } if(y-1>=0&&map[x][y]>map[x][y-1]) { temp=dp(x,y-1)+1; if(max<temp) max=temp; } return max; } int main() { int i,j,maxlen=0; scanf("%d%d",&n,&m); for(i=0;i<n;i++) for(j=0;j<m;j++) scanf("%d",&map[i][j]); for(i=0;i<n;i++) { for(j=0;j<m;j++) { len[i][j]=dp(i,j); if(maxlen<len[i][j]) maxlen=len[i][j]; } } printf("%d\n",maxlen+1); return 0; }
不怕路长,只怕心老.