习题9-8 uva1631
题意:
给你一串密码,每次我们可以转动1-3个数字,求转出最终答案的最小步数
思路:
感觉自己好坑,最开始想的是dp[cur][t1][t2][t3]也就是t1的位置以及连续的三个数的状态
但是卡死循环了,于是乎改成dp[cur][t1][t2](当前的位置以及它后面的数的状态)
每次求出当前位置转到正确答案时要的步数,然后枚举3种情况(也就是后面两个数是否一起转动)
但是中途发现思路有问题,111 --> 322 这种它会给出答案三,然而应该是2
(感觉最近课真的多,还要考试- -,都没时间做题)
通过上面那个例子发现,当前位置并不是一次旋转到正确答案是最优解(感觉思考问题是太片面了)
可能自己选转几格,再带动后面两个转动,322 -> 222 -> 111
所以对于后两个的可能枚举0 --> t(t为转动到正确答案的步数)
而且t2转动的步数≥a[cur+2]步数,因为第三个位置转动的前提便是t2转动
所以得出个循环,然后记忆化搜索
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <queue>
#include <vector>
#include <algorithm>
#include <functional> using namespace std;
const int maxn = 1005;
const int INF = 0x3f3f3f3f;
char str1[maxn];
char str2[maxn];
int a[maxn];
int b[maxn];
int dp[maxn][10][10];
int len; int up(int s,int t) //上旋
{ if(s >= t)
return s-t;
else
return (s-t+10)%10;
} int down(int s,int t) //下旋
{ if(t >= s)
return t-s;
else
return (t-s+10)%10;
} int DFS(int cur,int t1,int t2)
{
if(cur >= len)
return 0;
if(dp[cur][t1][t2] != -1)
return dp[cur][t1][t2];
int t = up(b[cur],t1);
int ans = INF; for(int i = 0; i <=t; i++) //枚举后个数的情况
for(int j = i; j <= t; j++)
{
ans = min(ans,DFS(cur+1,(t2+j)%10,(a[cur+2]+i)%10) + t);
} t = down(b[cur],t1);
for(int i = 0; i <=t; i++)
for(int j = i; j <= t; j++)
{
ans = min(ans,DFS(cur+1,(t2-j+10)%10,(a[cur+2]-i+10)%10) +t);
}
return dp[cur][t1][t2] = ans;
} int main()
{
while(scanf("%s%s",str1,str2) != EOF)
{
len= strlen(str1);
for(int i = 0; i < len; i++)
{
a[i] = str1[i] - '0';
b[i] = str2[i] - '0';
}
a[len] = a[len+1] = b[len] = b[len+1] = 0;
memset(dp,-1,sizeof(dp));
printf("%d\n",DFS(0,a[0],a[1]));
}
return 0;
}
习题9-8 uva1631的更多相关文章
- Sharepoint学习笔记—习题系列--70-576习题解析 --索引目录
Sharepoint学习笔记—习题系列--70-576习题解析 为便于查阅,这里整理并列出了70-576习题解析系列的所有问题,有些内容可能会在以后更新. 需要事先申明的是: 1. ...
- 《python核心编》程课后习题——第三章
核心编程课后习题——第三章 3-1 由于Python是动态的,解释性的语言,对象的类型和内存都是运行时确定的,所以无需再使用之前对变量名和变量类型进行申明 3-2原因同上,Python的类型检查是在运 ...
- 习题 5: 更多的变量和打印 | 笨办法学 Python
一. 简述 “格式化字符串(format string)” - 每一次你使用 ' ’ 或 " " 把一些文本引用起来,你就建立了一个字符串. 字符串是程序将信息展示给人的方式. ...
- 【WebGoat习题解析】Parameter Tampering->Bypass HTML Field Restrictions
The form below uses HTML form field restrictions. In order to pass this lesson, submit the form with ...
- python核心编程(第二版)习题
重新再看一遍python核心编程,把后面的习题都做一下.
- SQL简单语句总结习题
创建一个表记员工个人信息: --创建一个表 create table plspl_company_info( empno ) not null, ename ) not null, job ), ma ...
- 《Python核心编程》部分代码习题实践(持续更新)
第三章 3-10 交换异常处理方式 代码: #makeTextFile.py #!/usr/bin/env python 'makeTextFile.py' import os ls = os.lin ...
- web实验指导书和课后习题参考答案
实验指导书 :http://course.baidu.com/view/daf55bd026fff705cc170add.html 课后习题参考答案:http://wenku.baidu.com/li ...
- 《C++primer》v5 第1章 开始 读书笔记 习题答案
从今天开始在博客里写C++primer的文字.主要以后面的习题作业为主,会有必要的知识点补充. 本人也是菜鸟,可能有不对之处,还望指出. 前期内容可能会比较水. 1.1略 1.2略 1.3 cin和c ...
随机推荐
- 几款有用的AndroidStudio插件
1.Android Parcelable code generator 顾名思义,这是个生成实现了Parcelable接口的代码的插件. 在你的类中,按下alt + insert键弹出插入代码的上下文 ...
- 我从业11年来遇到的最奇葩的raid0+1数据恢复经历
我是一名数据恢复工程师,从事数据恢复行业已经11年了,前几天接到一组4块盘SCSI RAID0+1的数据恢复,客户说做了两组raid1,现在raid状态里显示有3快盘offline.如果两组盘分别作r ...
- PV & PVC - 每天5分钟玩转 Docker 容器技术(150)
Volume 提供了非常好的数据持久化方案,不过在可管理性上还有不足. 拿前面 AWS EBS 的例子来说,要使用 Volume,Pod 必须事先知道如下信息: 当前 Volume 来自 AWS EB ...
- java.lang.String 类源码解读
String类定义实现了java.io.Serializable, Comparable<String>, CharSequence 三个接口:并且为final修饰. public fin ...
- Java 10 的 10 个新特性,将彻底改变你写代码的方式!
Java 9才发布几个月,很多玩意都没整明白,现在Java 10又快要来了.. 这时候我真尼玛想说:线上用的JDK 7 甚至JDK 6,JDK 8 还没用熟,JDK 9 才发布不久不知道啥玩意,JDK ...
- emqtt 试用(九)ssl认证 - 客户端 mqttfx 验证
一.代码生成证书 1.安装openssl,配置path变量 安装文件:Win64OpenSSL-1_1_0f.exe 安装openssl:C:\OpenSSL-Win64 配置path变量:C:\Op ...
- LDAP apacheds解决方案
Apache DS 配置与管理 LADP基本介绍 LDAP(轻量级目录访问协议)以目录的形式来管理资源(域用户,用户组,地址簿,邮件用户,打印机等等). 特点: 1. LDAP是一种网略协议而 ...
- 新概念英语(1-29)Come in, Amy.
How must Amy clean the floor? A:Come in, Amy. Shut the door, please. This bedroom's very untidy. B:W ...
- python flask框架 tempates 模版的使用
在py文件同级下 建立templates文件夹,再文件夹中编写html文件 1 向模版中传递参数: ''' 1 向模板传送 参数 ''' @app.route('/') def index(): na ...
- tornado解决高并发的初步认识牵扯出的一些问题
#!/bin/env python # -*- coding:utf-8 -*- import tornado.httpserver import tornado.ioloop import torn ...