View Code of Problem 17

#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.


Back to problem 17