codefores 392B Tower of Hanoi (记忆搜索)
来源:互联网 发布:免费手机pdf编辑软件 编辑:程序博客网 时间:2024/05/22 05:17
题意:
和往常Hanoi问题不一样,这题给出每种操作的花费,用一个矩阵表示cost[i][j],表示从i号移动到j号的花费。问如何移动使得1中的全部圆块移动到3花费最小。
题解:
很明显要用记忆优化,那么正常的Hanoi问题移动的递归是这样的 dfs(l,n-1,x),move(l,r),dfs(x,n-1,r)
但是这题要求得最小花费决策肯定不止这一个,其实还可以这样 dfs(l,n-1,r),move(l,x),dfs(r,n-1,l),
move(x,r),dfs(l,n-1,r) 。其实就这两方案可以放,那么很显然状态方程就出来了。
dp[l][n][r] = max{ dfs(l,n-1,r)+cost[l][r] , dfs(l,n-1,r)*2+dfs(r,n-1,l)+cost[l][x]+cost[x][r] }
注意一点,当只有一个方块移动时,要判断cost[l][r],cost[l][x]+cost[x][r]那个更小。
#include<iostream>#include<math.h>#include<stdio.h>#include<algorithm>#include<string.h>#include<vector>#include<map>using namespace std;typedef long long ll;const int oo=0x3f3f3f3f;const ll OO=1LL<<61;const ll MOD=2147483647;const int maxn=5005;ll dp[4][45][4];int cost[4][4];ll Hanoi(int l,int n,int r){ if(dp[l][n][r]!=-1)return dp[l][n][r]; int x=6-l-r; if(n==1) return dp[l][n][r]=min(cost[l][r],cost[l][x]+cost[x][r]); ll ans1=Hanoi(l,n-1,x)+Hanoi(x,n-1,r)+cost[l][r]; ll ans2=Hanoi(l,n-1,r)*2+Hanoi(r,n-1,l)+cost[l][x]+cost[x][r]; return dp[l][n][r]=min(ans1,ans2);}int main(){ int n; memset(dp,-1,sizeof dp); for(int i=1;i<=3;i++) for(int j=1;j<=3;j++) scanf("%d",&cost[i][j]); scanf("%d",&n); cout<<Hanoi(1,n,3)<<endl; return 0;}/**0 2 21 0 1001 2 03*/
0 0
- codefores 392B Tower of Hanoi (记忆搜索)
- codeforces 392B Tower of Hanoi 记忆化搜索
- CF 392 B. Tower of Hanoi 记忆化搜索
- CF:392B - Tower of Hanoi 记忆化搜索DP
- Codeforces 392B Tower of Hanoi(递归+记忆化搜索)
- Codeforces Round #230 (Div. 1) B. Tower of Hanoi 记忆化搜索
- Codeforces 392B Tower of Hanoi
- Codeforces 392B Tower of Hanoi(DP)
- Tower of Hanoi CodeForces 392B
- Codeforce 392B Tower of Hanoi 区间dp
- 【进阶的汉诺塔】code forces 392B Tower of Hanoi
- codeforces 392 B. Tower of Hanoi(汉诺塔 DP)
- Codeforces_392B_Tower of Hanoi(记忆化搜索)
- THE TOWER OF HANOI
- Tower of Hanoi
- Tower of Hanoi
- Tower of Hanoi
- Tower of Hanoi问题
- Storm集群搭建
- javascript高级程序设计之数值转换
- 自定义控件一百行代码实现微信朋友圈九宫格图片显示
- 11.2 RAC环境OCR和Votedisk损坏丢失恢复
- 简单理解混淆矩阵
- codefores 392B Tower of Hanoi (记忆搜索)
- 通过servletcontext读取WEB-INF下的配置文件
- 立方体路径数
- JVM学习笔记
- 【html】html元素标签
- 读《程序员应该知道的97件事》
- Java图的建立
- 题目1516:调整数组顺序使奇数位于偶数前面
- Linux 下卸载MySQL Enterprise Monitor