如果我没理解错的话你的思路是找到最高的地方开始,但是最长的路的起点不一定在最高点,这组数据:
3 3
9 1 2
1 1 3
6 5 4
你的结果是2,但显然不对,你要把每个点都作为起点搜一遍,取最大的···
给你我的C程序,希望有帮助:
int a,b,num[100][100],f[100][100],v[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
void search(int x,int y){
int i,max=0;
for(i=0;i<4;i++)if(x+v[i][0]=0&&y+v[i][1]=0)if(num[x+v[i][0]][y+v[i][1]]
if(f[x+v[i][0]][y+v[i][1]]>max)max=f[x+v[i][0]][y+v[i][1]];
}
f[x][y]=max+1;
}
void main(){
int i,j,max=0;
scanf("%d %d",&a,&b);
for(i=0;i for(i=0;i if(!f[i][j])search(i,j);
if(max
printf("%d\n",max);
}