HDU5024Wang Xifeng's Little Plot(记忆化搜索)
来源:互联网 发布:想学淘宝美工如何学 编辑:程序博客网 时间:2024/05/16 15:37
HDU5024Wang Xifeng's Little Plot(记忆化搜索)
题目链接
题目大意:给一张地图,#代表不能走的位置,.代表可以走的位置。现在要求找一条最长的路径,并且拐弯最多只能有一个并且还要是90度的。
解题思路:记忆化搜索,dp[x][y][k][d] : x, y 代表坐标,k代表拐了k次90弯,d代表方向。因为这里最多只能转一次弯,而且还必须是90度的,那么就不可能走重复的路了。
代码:
#include <cstdio>#include <cstring>#include <queue>#include <cstdlib>using namespace std;const int N = 105;const int M = 8;const int dir[M][2] = {{-1, 0},{-1, 1}, {0, -1}, {1, 1}, {1, 0}, {1, -1}, {0, -1}, {-1, -1}};char rec[N][N];int n;int f[N][N][M][2];void init () { for (int i = 0; i <= n; i++) for (int j = 0; j <= n; j++) for (int d = 0; d < M; d++) for (int k = 0; k < 2; k++) f[i][j][d][k] = -1;}int dp (int x, int y, int k, int d) { if (f[x][y][d][k] != -1) return f[x][y][d][k]; int nx, ny; for (int i = 0; i < M; i++) { nx = x + dir[i][0]; ny = y + dir[i][1]; if (nx < 0 || nx >= n || ny < 0 || ny >= n) continue; if (rec[nx][ny] == '#') continue; if (i == d) f[x][y][d][k] = max (dp(nx, ny, k, d) + 1, f[x][y][d][k]); else if (!k && (abs(i - d) == 2 || abs (i - d) == 6)) f[x][y][d][k] = max (dp(nx, ny, k + 1, i) + 1, f[x][y][d][k]); } if (f[x][y][d][k] == -1) f[x][y][d][k] = 1; return f[x][y][d][k];}int main () { while (scanf ("%d", &n) && n) { for (int i = 0; i < n; i++) scanf ("%s", rec[i]); int ans = -1; init(); for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) { if (rec[i][j] == '.') { for (int d = 0; d < M; d++) ans = max (ans, dp(i, j, 0, d)); } } printf ("%d\n", ans); } return 0;}
0 0
- HDU5024Wang Xifeng's Little Plot(记忆化搜索)
- hdu5024Wang Xifeng's Little Plot(思维|搜索)
- hdu5024Wang Xifeng's Little Plot 暴力枚举
- HDU5024 Wang Xifeng's Little Plot 【记忆化搜索】
- HDU 5024 Wang Xifeng's Little Plot 记忆化搜索
- hdu5024 Wang Xifeng's Little Plot记忆化搜索
- Hdu-5024 Wang Xifeng's Little Plot(记忆化搜索)
- HDU 5024 (广州网络赛) Wang Xifeng's Little Plot 记忆化搜索+枚举
- HDU 5024 Wang Xifeng's Little Plot (枚举 + DFS记忆化搜索)
- HDU 5024 Wang Xifeng's Little Plot (搜索)
- hdu 5024 Wang Xifeng's Little Plot(搜索:遍历)
- HDU 5024 Wang Xifeng's Little Plot (搜索)
- Wang Xifeng's Little Plot - HDU 5024 搜索
- HDU 5024 - Wang Xifeng's Little Plot(暴力搜索)
- HDU 5024 Wang Xifeng's Little Plot 搜索
- hdu 5024 Wang Xifeng's Little Plot(搜索)
- HDU5024 - Wang Xifeng's Little Plot(DP)
- HDU - 5024 Wang Xifeng's Little Plot
- IoBuffer中mark()方法的使用
- 如何正确使用width height 进行合理布局
- 0-1背包问题入门小结 动态规划(DP)经典题目 POJ324 POJ1276
- php笔记之crud
- ios开发——仿新版QQ侧滑导航栏的实现
- HDU5024Wang Xifeng's Little Plot(记忆化搜索)
- 网络流题集
- ARM体系结构(二)——流水线
- 杭电 2520 我是菜鸟,我怕谁(细节题 相加和取余 不能用+=操作符)
- hdu 5014 Number Sequence
- 20140920百度笔试题一道之二维矩阵查找
- js之事件捕获和冒泡二
- HDU 1565 方格取数(1) (状态压缩DP)
- Hdu 5025 Saving Tang Monk (BFS 2014 Guangzhou Online )