栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 2120 Tango Tango Insurrec...

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 2120 Tango Tango Insurrec...

#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define MAXN 75#define INF 0x3f3f3f3fstruct NODE{int i, l, r, s;}path[MAXN][4][4][3];char a[MAXN];int dp[MAXN][4][4][3], n, buf;bool ok(int f, int l, int r, int to){if (0 == f){if (to == r) return false;if (to == l) return true;if (2 == r) return false;}else{if (to == l) return false;if (to == r) return true;if (3 == l) return false;}return true;}int cost(int s, int now, int from, int to){if (s != now) return 1;if (from == to) return 3;if ((from == 0 && to == 1) || (from == 1 && to == 0)) return 7;if ((from == 2 && to == 3) || (from == 3 && to == 2)) return 7;return 5;}int dfs(int i, int l, int r, int s){int& ans = dp[i][l][r][s];NODE& p = path[i][l][r][s];if (-1 != ans) return ans;if (i == n) return ans = 0;ans = INF;if ('.' == a[i]){ans = min(ans, dfs(i+1,l,r,0));p.i = i + 1, p.l = l, p.r = r, p.s = 0;for (int j = 0; j < 4; j++){if (ok(0, l, r, j)){buf = dfs(i + 1, j, r, 1) + cost(s,1,l, j);if (ans > buf)ans = buf, p.i = i + 1, p.l = j, p.r = r, p.s = 1;}if (ok(1, l, r, j)){buf = dfs(i + 1, l, j, 2) + cost(s,2,r, j);if (ans > buf)ans = buf, p.i = i + 1, p.l = l, p.r = j, p.s = 2;}}return ans;}int to;switch (a[i]){case 'U':to = 0; break;case 'D':to = 1; break;case 'L':to = 2; break;case 'R':to = 3; break;}if (ok(0, l, r, to)){buf = dfs(i + 1, to, r, 1) + cost(s,1,l, to);if (ans > buf)ans = buf, p.i = i + 1, p.l = to, p.r = r, p.s = 1;}if (ok(1, l, r, to)){buf = dfs(i + 1, l, to, 2) + cost(s,2,r, to);if (ans > buf)ans = buf, p.i = i + 1, p.l = l, p.r = to, p.s = 2;}return ans;}void pt(int i, int l, int r, int s){if (n == i) return;NODE& p = path[i][l][r][s];if (!p.s)printf(".");else if (p.s == 1)printf("L");elseprintf("R");pt(p.i, p.l, p.r, p.s);}int main(){while(scanf("%s%*c", a) && '#' != a[0]){n = strlen(a);memset(dp,-1,sizeof(dp));dfs(0, 2, 3, 0);pt(0, 2, 3, 0);puts("");}return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/378180.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号