| Run ID | User | Problem | Result | Memory | Time | Language | Code Length | Submit Time |
| 7545088 | kingpro | 1088 | Accepted | 216K | 16MS | C++ | 649B | 2010-08-28 03:06:20 |
| 7545076 | kingpro | 1088 | Accepted | 216K | 0MS | C++ | 695B | 2010-08-28 02:52:08 |
#include <stdio.h>
#define MAXN 100
int h[MAXN][MAXN], dp[MAXN][MAXN], move[4][2]={-1,0,1,0,0,-1,0,1}; int r, c;
inline int MAX(int x,int y){ return x>y ? x : y;}
int dfs(int i, int j)
{
if(dp[i][j]==-1)
for(int k=0,x,y,max=1;k<4 || (dp[i][j]=max, false);k++)
x=i+move[k][0],y=j+move[k][1], h[i][j]>h[x][y] && x>=0 && y>=0 && x<r && y<c && (max=MAX(max,dfs(x,y)+1));
return dp[i][j];
}
int main()
{
int n=0, i, j, m;
for(scanf("%d %d", &r, &c), i=0;i<r; i++) for(j=0; j<c; j++) scanf("%d", &h[i][j]), dp[i][j]=-1;
for(i=0;i<r || (printf("%d\n", n), false); i++) for(j=0; j<c; j++) m=dfs(i, j), m>n && (n=m);
return 0;
}
DP问题,这里递归求解。
Author: CriusWuBlog: http://kingpro.cnblogs.comContact: kingpro@live.cn
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
posted on
浙公网安备 33010602011771号