#include<iostream> #include<cstdio> using namespace std; struct node { int x,y,value,step; }a[100][100]; int dx[]={-1,0,1,0},dy[]={0,1,0,-1}; int n,m,ans; int dfs(node current) { ans=max(current.step,ans); //cout<<"x:"<<current.x<<" y"<<current.y<<" step"<<current.step<<" value"<<current.step<<endl; node next ; for(int i=0;i<4;i++) { next.x=current.x+dx[i]; next.y=current.y+dy[i]; if(next.x>=0&&next.x<n&&next.y>=0&&next.y<m&&a[next.x][next.y].value-a[current.x][current.y].value==1) { next.step=current.step+1; next.value=a[next.x][next.y].value; dfs(next); } } return ans; } int main() { while(cin>>n>>m) { for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { cin>>a[i][j].value; } } int MaxStep=-1; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { a[i][j].step=0; ans=0; MaxStep=max(MaxStep,dfs(a[i][j])); } } cout<<MaxStep<<endl; } } |
Double click to view unformatted code.