#include<bits/stdc++.h> using namespace std; int step_sum(vector<vector<int> > step,int i,int j,int n) { int n1[4]={0},flag[4]={0},mmax=0; if(step[i+1][j]-step[i][j]==1) {n1[0]=step_sum(step,i+1,j,n+1);flag[0]=1;} if(step[i-1][j]-step[i][j]==1) {n1[1]=step_sum(step,i-1,j,n+1);flag[1]=1;} if(step[i][j-1]-step[i][j]==1) {n1[2]=step_sum(step,i,j-1,n+1);flag[2]=1;} if(step[i][j+1]-step[i][j]==1) {n1[3]=step_sum(step,i,j+1,n+1);flag[3]=1;} for(int i=0;i<4;++i) if(mmax<n1[i]) mmax=n1[i]; if(flag[0]||flag[1]||flag[2]||flag[3]) return mmax; else return n; } int main(void) { int n,m,i,j,mmax=0; cin>>n>>m; vector<vector<int> > step(n+2,vector<int>(m+2,10000)); for(i=1;i<=n;++i) for(j=1;j<=m;++j) cin>>step[i][j]; for(i=1;i<=n;++i) for(j=1;j<=m;++j) mmax=max(mmax,step_sum(step,i,j,0)); cout<<mmax<<endl; } |
Double click to view unformatted code.