pd1009
BAN USER#include<iostream>
#include<vector>
#include<queue>
using namespace std;
struct node{
int row;
int col;
int data;
int length;
};
int main()
{
int m,n,max=0;
cin>>m>>n;
queue<node*> q;
vector<vector<int> > v(m,n);
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
cin>>v[i][j];
for(int i=0;i<m;i++)
{ for(int j=0;j<n;j++)
{
node* a=new node;
a->col=j;
a->row=i;
a->data=v[i][j];
a->length=1;
q.push(a);
while(!q.empty())
{
node* b=new node;
b=q.front();
q.pop();
if(b->length>max)
max=b->length;
if(b->row+1<m)
if(v[b->row+1][b->col]==b->data+1)
{
// cout<<"down\n";
node* c=new node;
c->row=b->row+1;
c->col=b->col;
c->data=b->data+1;
c->length=b->length+1;
q.push(c);
}
if(b->row-1>=0)
if(v[b->row-1][b->col]==b->data+1)
{
//cout<<"up\n";
node* c=new node;
c->row=b->row-1;
c->col=b->col;
c->data=b->data+1;
c->length=b->length+1;
q.push(c);
}
if(b->col+1<n)
if(v[b->row][b->col+1]==b->data+1)
{
//cout<<"right\n";
node* c=new node;
c->row=b->row;
c->col=b->col+1;
c->data=b->data+1;
c->length=b->length+1;
q.push(c);
}
if(b->col-1>=0)
if(v[b->row][b->col-1]==b->data+1)
{
//cout<<"left\n";
node* c=new node;
c->row=b->row;
c->col=b->col-1;
c->data=b->data+1;
c->length=b->length+1;
q.push(c);
}
}
}
}
cout<<max;
system("pause");
return 0;
}
#include<iostream>
#include<vector>
#include<queue>
using namespace std;
struct node{
int row;
int col;
int data;
int length;
};
int main()
{
int m,n,max=0;
cin>>m>>n;
queue<node*> q;
vector<vector<int> > v(m,n);
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
cin>>v[i][j];
for(int i=0;i<m;i++)
{ for(int j=0;j<n;j++)
{
node* a=new node;
a->col=j;
a->row=i;
a->data=v[i][j];
a->length=1;
q.push(a);
while(!q.empty())
{
node* b=new node;
b=q.front();
q.pop();
if(b->length>max)
max=b->length;
if(b->row+1<m)
if(v[b->row+1][b->col]==b->data+1)
{
// cout<<"down\n";
node* c=new node;
c->row=b->row+1;
c->col=b->col;
c->data=b->data+1;
c->length=b->length+1;
q.push(c);
}
if(b->row-1>=0)
if(v[b->row-1][b->col]==b->data+1)
{
//cout<<"up\n";
node* c=new node;
c->row=b->row-1;
c->col=b->col;
c->data=b->data+1;
c->length=b->length+1;
q.push(c);
}
if(b->col+1<n)
if(v[b->row][b->col+1]==b->data+1)
{
//cout<<"right\n";
node* c=new node;
c->row=b->row;
c->col=b->col+1;
c->data=b->data+1;
c->length=b->length+1;
q.push(c);
}
if(b->col-1>=0)
if(v[b->row][b->col-1]==b->data+1)
{
//cout<<"left\n";
node* c=new node;
c->row=b->row;
c->col=b->col-1;
c->data=b->data+1;
c->length=b->length+1;
q.push(c);
}
}
}
}
cout<<max;
system("pause");
return 0;
}
- pd1009 August 25, 2012