UVA 1631 记忆化搜索
来源:互联网 发布:凌波多媒体教室软件 编辑:程序博客网 时间:2024/06/08 12:21
题意
n位密码锁,每次可以向上或向下转动1-3个密码,问从初始状态转换到目标状态最少需要转动多少次。
题解
设dp[cnt][a][b][c]为当前位为cnt时,cnt位置上的值为a,cnt+1位置上的值为b,cnt+2位置上的值为c。此时将cnt位转动到目标状态,向上或向下转动,根据向上或向下转动后转动的次数,选择转动最少的转动方式,即可得解。
代码
#include <iostream>#include<cstdio>#include<algorithm>#include<cstring>#define INF 1e9using namespace std;int aNum[1010],bNum[1010];int dp[1010][11][11][11];int len;int getUpStep(int now,int dst){ return (dst-now+10)%10;}int getDownStep(int now,int dst){ return (now-dst+10)%10;}int goUp(int now,int up){ return (now+up+10)%10;}int goDown(int now,int down){ return (now-down+10)%10;}int dfs(int cnt,int a,int b,int c){ if(dp[cnt][a][b][c]!=-1) return dp[cnt][a][b][c]; if(cnt==len) return 0; int up=getUpStep(a,bNum[cnt]); int down=getDownStep(a,bNum[cnt]); int ans=INF; for(int i=0;i<=up;i++){ for(int j=0;j<=i;j++){ ans=min(ans,dfs(cnt+1,goUp(b,i),goUp(c,j),aNum[cnt+3])+up); } } for(int i=0;i<=down;i++){ for(int j=0;j<=i;j++){ ans=min(ans,dfs(cnt+1,goDown(b,i),goDown(c,j),aNum[cnt+3])+down); } } return dp[cnt][a][b][c]=ans;}int main(){ char str1[1010],str2[1010]; while(scanf("%s%s",str1,str2)!=EOF){ len=strlen(str1); for(int i=0;i<len;i++){ aNum[i]=str1[i]-'0'; bNum[i]=str2[i]-'0'; } memset(dp,-1,sizeof(dp)); aNum[len]=aNum[len+1]=aNum[len+2]=0; printf("%d\n",dfs(0,aNum[0],aNum[1],aNum[2])); } return 0;}
0 0
- UVA 1631 记忆化搜索
- uva 10285 记忆化搜索
- uva 707(记忆化搜索)
- uva 607 记忆化搜索
- uva 10118 记忆化搜索
- UVA 10285 记忆化搜索
- UVA 1630 记忆化搜索
- UVA 242 记忆化搜索
- UVA 116记忆化搜索
- UVa 11468 AC自动机+记忆化搜索
- 记忆化搜索 uva-10651-Pebble Solitaire
- UVA Cutting Sticks(记忆化搜索)
- UVA 607 (dp记忆化搜索)
- UVA 10604 (记忆化搜索 + hash)
- UVA 709 Formatting Text(记忆化搜索)
- UVa 10617 Again Palindromes / 记忆化搜索
- UVa 103 Stacking Boxes / 记忆化搜索
- UVA 707 - Robbery(记忆化搜索)
- PAT1002写出这个数
- python +requests 实现爬取百度图片
- JavaScript BOM概述(open/close/location/navigator/history/定时器)
- 【九度OJ】题目1194:八进制 解题报告
- 图论中的后向边、前向边、横叉边、树边
- UVA 1631 记忆化搜索
- java实现——杭电2000ASCII码排序
- PAT算法笔记(十四)————科学计数法
- Django搭建简易博客开发笔记
- java机试题及参考
- 数据库范式
- 机试--删除嵌套注释
- bzoj1612
- BZOJ 2165 大楼