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问题,这里递归求解。

 posted on 2010-08-28 03:13  步碎酒散花醉  阅读(372)  评论(0)    收藏  举报