动态规划又一经典: #include <stdio.h> #include<stdio.h> #define MAX 100 int len[MAX][MAX]; int height[MAX][MAX]; int r,c; int getlen(int i,int j) { if(len[i][j]>=0) { return len[i][j]; } int tem,max=0; //上 if(i>0&&height[i-1][j]<height[i][j]) { tem=getlen(i-1,j)+1; if(tem>max) max=tem; } //下 if(i<r-1&&height[i+1][j]<height[i][j]) { tem=getlen(i+1,j)+1; if(tem>max) max=tem; } //左 if(j>0&&height[i][j-1]<height[i][j]) { tem=getlen(i,j-1)+1; if(tem>max) max=tem; } //右 if(j<c-1&&height[i][j+1]<height[i][j]) { tem=getlen(i,j+1)+1; if(tem>max) max=tem; } return max; } int main() { int i,j,max=0; scanf("%d %d",&r,&c); for (i=0;i<r ;i++ ) { for (j=0;j<c ;j++ ) { scanf("%d",&height[i][j]); len[i][j]=-1; } } for (i=0;i<r ;i++ ) { for (j=0;j<c ;j++ ) { len[i][j]=getlen(i,j); if(len[i][j]>max) { max=len[i][j]; } } } printf("%d",max+1); return 0; } 动态规划又一经典: