#include<iostream> #include<cstdio> using namespace std; struct node { int x,y,step; }; int 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]-a[current.x][current.y]==1) { next.step=current.step+1; 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]; } } int MaxStep=-1; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { node current; current.x=i; current.y=j; current.step=0; ans=0; //cout<<dfs(current)<<endl; MaxStep=max(MaxStep,dfs(current)); } } cout<<MaxStep<<endl; } } |
Double click to view unformatted code.