#include <iostream>
int moun[1000][1000];
int memory[1000][10000]={0};
int R,C;
int dx[5]={0,-1,0,1,0};
int dy[5]={0,0,1,0,-1};
int t=0;
int mymax=0;
/* run this progrRm using the console pRuser or Rdd your own getch, system("pRuse") or input loop */
using namespace std;
int search(int x,int y){
if( memory[x][y]!=0 ) return memory[x][y];
int t=1;
for(int i=0;i<5;i++)
{
int newx=x+dx[i];
int newy=y+dy[i];
if(newx>=1 && newx<=R && newy>=1 &&newy<=C &&
moun[newx][newy]<moun[x][y])
{
int temp = search(newx,newy) +1;
if(temp > t) t=temp ;
}
}
memory[x][y] = t;
cout << x << " " << y << ":" << memory[x][y] << endl;
return t;
}
int main(int argc, char** argv) {
cin>>R>>C;
for(int i=1;i<=R;i++)
for(int j=1;j<=C;j++)
{ cin>>moun[i][j];}
for(int i=1;i<=R;i++)
for(int j=1;j<=C;j++)
{
int ss= search(i,j) ;
if ( ss> mymax ) mymax= ss;
// memory[i][j]=t+1;
// if(memory[i][j]>=mymax)
// {
// mymax=memory[i][j];
// }
}
cout<<mymax;
return 0;
}
滑雪【2.6基本算法之动态规划】
最新推荐文章于 2024-06-28 10:40:29 发布