您的位置:首页 > 其它

POJ-1088-滑雪

2016-09-20 21:47 381 查看
思路:

mp记录长度,a记录这个单位高度,vis记录是否遍历过

#include <iostream>
#include <stdio.h>
using namespace std;
int col,row;
int mp[105][105];
int a[105][105];
int vis[105][105];
int solve(int x,int y)
{
if(x<1||x>row||y<1||y>col)
return 0;
if(vis[x][y]==1)
return mp[x][y];
vis[x][y]=1;
int up=0,down=0,left=0,right=0;
if(a[x][y]>a[x-1][y])
up=solve(x-1,y);
if(a[x][y]>a[x+1][y])
down=solve(x+1,y);
if(a[x][y]>a[x][y-1])
left=solve(x,y-1);
if(a[x][y]>a[x][y+1])
right=solve(x,y+1);
mp[x][y]=+mp[x][y]+max(max(max(up,down),left),right);
return mp[x][y];
}
int main()
{
cin>>row>>col;
for(int i=1;i<=row;i++)
{
for(int j=1;j<=col;j++)
{
cin>>a[i][j];
mp[i][j]=1;
vis[i][j]=0;
}
}
int maxn=0;
for(int i=1;i<=row;i++)
{
for(int j=1;j<=col;j++)
{
maxn=max(maxn,solve(i,j));
}
}
cout<<maxn<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: