您的位置:首页 > 其它

POJ 1008 深度优先、记忆搜索

2013-05-15 22:10 253 查看
http://blog.sina.com.cn/s/blog_7025794a01014pps.html



#include <iostream>
#include <string>

using namespace std;

const int MAXN = 100;

int r, c;
int h[MAXN+1][MAXN+1];
int f[MAXN+1][MAXN+1];

bool Valid(int x, int y)
{
return x >= 1 && x <= r && y >= 1 && y <= c;
}

int F(int i, int j)
{
if (f[i][j] != 0)
{
return f[i][j];
}
int d;
const int dir[][2] = {{0, ‐1}, {‐1, 0}, {0, 1}, {1, 0}};
for (d = 0; d < 4; d ++)
{
int x = i + dir[d][0], y = j + dir[d][1];
if (Valid(x, y) && h[x][y] < h[i][j] && F(x, y) > f[i][j])
{
f[i][j] = F(x, y);
}
}
return ++f[i][j];
}

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