PKU1088——滑雪
2010-05-05 15:52
405 查看
字号:大 中 小
http://acm.pku.edu.cn/JudgeOnline/problem?id=1088 CODE: /* * author:Logic0 * time : 20010-5-4 */ #include <stdio.h> #include <stdlib.h> #define MAX 101 int mx[MAX][MAX]; int opt[MAX][MAX]; int r,c; int move[4][2]; void init() { //memset(mx,0,sizeof(mx)); //memset(opt,0,sizeof(opt)); move[0][0] = 0,move[0][1] = 1; //right move[1][0] = 0,move[1][1] = -1; //left move[2][0] = 1,move[2][1] = 0; //down move[3][0] = -1,move[3][1] = 0; //up } int bound(int x , int y) { return ( x >= 1 && x <= r && y >=1 && y <=c); } int func(int x , int y) { int i,j; if(opt[x][y] > 0 ) return opt[x][y]; for(i = 0 ; i < 4 ; i++) { if( bound(x+move[i][0],y+move[i][1]) ) { if(mx[x+move[i][0]][y+move[i][1]] < mx[x][y]) { if(opt[x][y] < func(x+move[i][0],y+move[i][1])+1) { opt[x][y] = func(x+move[i][0],y+move[i][1])+1; } } } } return opt[x][y]; } int main(void) { int i,j; int ans = 0; init(); scanf("%d%d",&r,&c); for(i = 1 ; i <= r ; i++) { for(j = 1 ; j <= c ;j++) { scanf("%d",&mx[i][j]); } } for(i = 1 ; i <= r ;i++) { for(j = 1 ; j <= c ;j++) { if(ans < func(i,j)+1) { ans = func(i,j)+1; } } } printf("%d",ans); return 0; }
相关文章推荐