您的位置:首页 > 其它

tyvj p1004 滑雪[dp]

2014-08-30 11:17 267 查看
#include <iostream>
#include <cstdlib>
#include <stdio.h>
using namespace std;

int map[105][105],dp[101][101];
int dx[4] = {-1, 1, 0, 0};
int dy[4] = {0, 0, 1, -1};
int r, c;

int dfs(int x, int y)
{
if(dp[x][y] != 0)
return dp[x][y];
int maxn = 0;
int xx, yy;
for(int i = 0; i < 4; ++i)
{
xx = x + dx[i];
yy = y + dy[i];
if(xx >= 1 && xx <= r && yy >= 1 && yy <= c)
{
if(map[x][y] > map[xx][yy])
{
int tmp = dfs(xx, yy)+1;
maxn = max(maxn, tmp);
}
}
}
dp[x][y] = maxn;
return maxn;
}
int main()
{
scanf("%d%d", &r, &c);
for(int i = 1; i <= r; ++i)
for(int j = 1; j <= c; ++j)
cin >> map[i][j];

int maxn = 0;
for(int i = 1; i <= r; ++i)
for(int j = 1; j <= c; ++j)
{
dp[i][j] = dfs(i, j);
maxn = max(maxn, dp[i][j]);
}
cout << maxn+1 << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: