View Code of Problem 17

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


Back to problem 17