#752. Open the Lock

OpenLock:适用于OpenAI Gym的OpenLock环境 开锁 OpenLock是一个OpenAI Gym环境,旨在用于迁移学习。 环境由组成结构控制,该结构需要对抽象的潜在状态进行推理。 OpenLock是一个虚拟的“逃生室”,需要代理商与操纵杆进行交互才能打开门。 要求代理商在一个房间内找到所有解决方案。 完成单个房间后,座席将移至具有相同基础抽象结构的新房间,但是每个杠杆的位置已更改。 此实验设置旨在测试代理是否能够形成任务的抽象表示。 下面的gif总结了环境的执行情况以及各个房间之间的杠杆位置如何变化: 该环境支持多种方案,每种方案都编码用于控制该环境的特定锁定机制: 有关环境的其他详细信息,请参阅我们的CogSci 2018论文的项目页面: ://www.mjedmonds.com/projects/OpenLock/CogSci18_OpenLock_CausalRL.html 安装 安装: 使用Python 3.5+ 安 立即下载

题目描述:

You have a lock in front of you with 4 circular wheels. Each wheel has 10 slots: '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'. The wheels can rotate freely and wrap around: for example we can turn '9' to be '0', or '0' to be '9'. Each move consists of turning one wheel one slot.

The lock initially starts at '0000', a string representing the state of the 4 wheels.

You are given a list of deadends dead ends, meaning if the lock displays any of these codes, the wheels of the lock will stop turning and you will be unable to open it.

Given a target representing the value of the wheels that will unlock the lock, return the minimum total number of turns required to open the lock, or -1 if it is impossible.

Example 1:

Input: deadends = ["0201","0101","0102","1212","2002"], target = "0202"
Output: 6
Explanation:
A sequence of valid moves would be "0000" -> "1000" -> "1100" -> "1200" -> "1201" -> "1202" -> "0202".
Note that a sequence like "0000" -> "0001" -> "0002" -> "0102" -> "0202" would be invalid,
because the wheels of the lock become stuck after the display becomes the dead end "0102".

Example 2:

Input: deadends = ["8888"], target = "0009"
Output: 1
Explanation:
We can turn the last wheel in reverse to move from "0000" -> "0009".

Example 3:

Input: deadends = ["8887","8889","8878","8898","8788","8988","7888","9888"], target = "8888"
Output: -1
Explanation:
We can't reach the target without getting stuck.

Example 4:

Input: deadends = ["0000"], target = "8888"
Output: -1

Note:

  1. The length of deadends will be in the range [1, 500].
  2. target will not be in the list deadends.
  3. Every string in deadends and the string target will be a string of 4 digits from the 10,000 possibilities '0000' to '9999'.
class Solution {
public:
    int openLock(vector<string>& deadends, string target) {
        unordered_set<string> visited;
        // 可以把死锁的情况认为是已经访问过的组合
        for (const string& deadend : deadends) {
            visited.insert(deadend);
        }
        int count = 0;
        queue<string> q;
        // 特殊情况单独判断
        if (visited.find("0000") != visited.end()) return -1;
        q.push("0000");
        visited.insert("0000");
        while(!q.empty()) {
            int n = q.size();
            for (int i = 0; i < n; i++) {
                string cur = q.front();
                q.pop();
                if (cur == target) return count;
                for (int j = 0; j < cur.size(); j++) {
                    forward(cur[j]);
                    if (visited.find(cur) == visited.end()) {
                        q.push(cur);
                        visited.insert(cur);
                    }
                    backward(cur[j]);
                    backward(cur[j]);
                    if (visited.find(cur) == visited.end()) {
                        q.push(cur);
                        visited.insert(cur);
                    }
                    forward(cur[j]);
                }
            }
            count ++;
        }
        return -1;
    }
    
    void forward(char& c) {
        c = '0' + (c - '0' + 1) % 10;
    }
    
    void backward(char& c) {
        c = '0' + (c - '0' + 9) % 10;
    }
};

 

5分钟搞懂基因组规模代谢网络(GSMM):从数据库选择到模型构建全流程 本文详细解析基因组规模代谢网络(GSMM)构建的全流程,从数据库选择到模型优化。重点介绍MetaCyc、BiGG等主流数据库的黄金三角评估法则,对比自上而下与自下而上两种建模方法,并提供模型修剪、仿真优化的实用技巧与避坑指南,帮助研究者高效构建精准代谢网络模型。 阅读详情

相关推荐

752. Open the Lock

752. Open the Lock方法1: bfs易错点: You have a lock in front of you with 4 circular wheels. Each wheel has 10 slots: ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’. The wheels can rotate freely and wrap ...

wilzxu的博客 268

手把手教你用Wireshark抓包分析Profinet非周期通信(附实战案例)

本文详细解析了PROFINET非周期通信(RTA)的技术原理与实战应用,通过Wireshark抓包分析,揭示从PLC请求到驱动器响应的完整对话过程。涵盖实验环境搭建、关键配置步骤、典型参数访问流程及故障诊断案例,帮助工程师深入理解并优化工业网络通信性能。

Black的专栏 1047

LintCode 796: Open the Lock (BFS好题)

Open the Lock 中文English You have a lock in front of you with 4 circular wheels. Each wheel has 10 slots: ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’. The wheels can rotate freely and wrap around...

roufoo的博客 300

B.3【智能标注】:基于Labelstudio的UIE半监督深度学习的智能标注方案(云端版),提效。

Label Studio 所提供的 Machine Learning Backend 提供了一个比较灵活的辅助人工标注的框架,我们通过它确实可以加快 nlp 数据的标注Label Studio 的 enterprise 版本提供了 Active Learning 的流程,不过从其描述看这个流程并不完美,尤其是 fit 部分,由于 Label Studio 低估了「Train」所花费的时间,所以每次标注都自动训练的流程可能并不会那么顺滑(会在链接时候等待一段时间)

丨汀、的博客 1840

OpenClaw实战系列02:企业微信接入完全指南

本文详细介绍了如何将OpenClaw与企业微信对接,实现智能机器人功能。主要内容包括:企业微信侧创建智能机器人或自建应用,获取必要凭证和权限;OpenClaw侧安装配置企业微信插件,设置通信通道;完成双向验证并进行功能测试。文章提供了详细的配置步骤、常见问题排查方法和进阶玩法,帮助用户在30分钟内完成对接。关键点包括:确保URL可访问、Token一致、网关正常运行,以及针对不同部署环境(云服务器/内网)的配置差异。

PeterPan的博客 3811

【leetcoded-Python】-BFS-752. Open the Lock

题目链接 https://leetcode.com/problems/open-the-lock 题目描述 给你一个带有4个圆形拨轮的转盘锁。每个拨轮有10个数字:'0', '1', '2', '3', '4', '5', '6', '7', '8', '9' 。每个拨轮可以自由旋转:例如把 '9' 变为'0','0' 变为 '9' 。每次旋转都只能旋转一个拨轮的一位数字。锁的初始数字为 '0000' ,一个代表四个拨轮数字的字符串。 列表 deadends 包含了一组死亡数字,一旦拨轮数字和列..

gulaixiangjuejue的博客 176

【100%通过率】华为OD机试真题 Python【数字最低位排序】【最低位排序】

2023华为OD机试真题 Python【数字最低位排序】【最低位排序】 给定一个非空数组(列表) 起元素数据类型为整型 请按照数组元素十进制最低位从小到大进行排序 十进制最低位相同的元素,相对位置保持不变 当数组元素为负值时,十进制最低为等同于去除符号位后对应十进制值最低位

MISAYAONE的博客 1901

Open the lock(bfs)

Now an emergent task for you is to open a password lock. The password is consisted of four digits. Each digit is numbered from 1 to 9. Each time, you can add or minus 1 to any digit. When add 1 to '9'...

聪明绝顶的你与即将秃头的我 1736

Claude Code 100个真实案例 - 用AI设计Arduino PCB电路板(硬件小白也能画板)

本案例展示如何使用 Claude Code 配合 KiCad 的 Python 脚本接口,从零设计一块 Arduino 传感器扩展板 PCB。从原理图符号创建、网表生成到 PCB 布局布线,全程自动化完成,最终输出可直接发给工厂打样的 Gerber 文件。

yueyeguzhuo的专栏 437

基于Simulink的占空比调制DTC降低转矩脉动

修改传统SVPWM模块,输入占空比d和有效矢量索引,计算Ton​=d∗Tc​、Toff​=(1−d)∗Tc​,生成对称PWM波形(替代开关表直接输出)。:低速时(n<500rpm)减小dmax​=0.6(避免磁链畸变),高速时(n>2000rpm)增大dmax​=0.8(提升动态响应);kT​/kψ​:转矩/磁链误差增益(需整定,如kT​=0.02/(N⋅m),kψ​=0.1/Wb);(θ为电压矢量与磁链夹角)。② SVM-DTC(占空比计算模块启用,d0​=0.5,kT​=0.02,kψ​=0.1)。

amy_mhd的博客 87

#752 Open the Lock

Description You have a lock in front of you with 4 circular wheels. Each wheel has 10 slots: ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’. The wheels can rotate freely and wrap around: for example we can turn ‘9’ to be ‘0’, or ‘0’ to be ‘9’. Each move

YY_Tina的博客 425

面向红外小目标检测的SCTransNet:模型优势解析、代码实现与完整复现指南

摘要:本文详细介绍了基于SCTransNet的红外小目标检测全流程实践方案。针对红外小目标检测面临的三大挑战(特征稀缺、背景干扰、尺度变化),SCTransNet通过空-通道交叉注意力机制有效增强目标特征。文章包含完整的PyTorch实现代码,涵盖特征提取、注意力模块、多尺度融合等核心组件,并提供模型训练、评估的具体方法。同时给出毕设创新方向的建议,如模型轻量化、多模态融合等,帮助提升研究深度。该方案技术难度适中,应用价值明确,是红外目标检测领域理想的毕设选题方向。

m0_71589036的博客 4759

leetcode 752. open-the-lock 打开转盘锁 python3

时间:2020-7-13 题目地址:https://leetcode-cn.com/problems/open-the-lock/ 题目难度:Medium 题目描述: 你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' 。每个拨轮可以自由旋转:例如把 '9' 变为'0','0' 变为 '9' 。每次旋转都只能旋转一个拨轮的一位数字。 锁的初始数字为 '0000' ,一个代表四个拨轮的数字的..

isabloomingtree的博客 316

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Could not get lock /var/lib/dpkg/lock - open 解决方法

无法获得锁 /var/lib/dpkg/lockE: Could not get lock /var/lib/dpkg/lock - open (11 Resource temporarily unavailable)当你执行sudo apt-get XXX这种命令时出现类似下面的输出错误:E: Could not get lock /var/lib/dpkg/lock - open (11 Res

AoboSir.com 11万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SC16IS752 树莓派 RDK X3PI 底层驱动

【代码】SC16IS752 树莓派 底层驱动。

qq_43231904的博客 76

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

[Leetcode算法学习]:Leetcode模块Queue & Stack部分总结

本月完成了Leetcode的Explore模块中额"Queue and Stack"部分。目前尚欠缺两道题:01 Matrix(DFS与DP结合,还有巧解法)与Clone Graph。今天小小的总结一下这一模块。该模块的目标在于: 理解FIFO与LIFO的处理顺序。 实现栈(Stack)与队列两种数据结构。 对于Python或者其他语言,例如Java的内建栈与队列结构熟悉。 运用Que...

weixin_38170853的博客 355

E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)

问题详细提示如下: E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarly unavailable) E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is an other proces...

qq_40907977的博客 3652

rpm库文件出错,rpmdb: Lock table is out of available locker entries

安装zimbra,遇到几个suggetst packet没有安装,不敢继续了,果断中止,想先把这几个包装全了。yum的时候,出错了。 [root@mail zcs-6.0.10_GA_2692.RHEL5.20101215171125]# yum install perl rpmdb: Lock table is out of available locker e...

weixin_34342992的博客 237

linux服务器无法yum,linux服务器无法yum的问题rpmdb: Lock table is out of available&nbsp...

[root@cache1 ~]# yum install testrpmdb:Lock table is out of available locker entriesrpmdb:Unknown locker ID: 2058error: db4error(22) from db->close: Invalid argumenterror:cannot open Packages index...

weixin_39701861的博客 188

让AI接入你的画布:Ideon MCP Server 配合 Claude 与 Cursor 的完全教程

Ideon 是一款自托管的可视化工作区,把笔记、文件、待办、Git 仓库都铺在同一张无限画布上。它内置的 MCP Server(端点 `POST /api/mcp`)能让 Claude、Cursor 等 AI 助手直接读取并编辑你的画布——一句话就能创建笔记、移动看板任务、整理链接。本教程带你 5 分钟完成 Ideon MCP 接入配置,让 AI 真正"长上手"。 [![Ideon 无限画布应用

gitblog_00438的博客 426

Wing 模拟器资源启动失败机制解析:从 on-start 测试快照看 sim.Resource 的生命周期与错误传播

本文围绕 Wing 仓库中 `tools/hangar/__snapshots__/test_corpus/sdk_tests/resource/` 目录下的 `on-start.test.w_test_sim.md` 测试快照展开,深入剖析 `sim.Resource` 在启动(start)阶段抛错时模拟器(simulator)的行为:资源状态如何被标记为 `error`、后续 `call` 调

gitblog_00327的博客 487

CPython logging.handlers 模块完全指南:15 种日志 Handler 的参考手册与源码级解析

`logging.handlers` 是 CPython 标准库 [logging 包](https://link.gitcode.com/i/e6d3b854525e685639f86294d22329bd) 的扩展模块,为应用提供了一整套"日志去向"组件:从写入文件、按大小或时间滚动日志文件,到经 Socket/UDP/SMTP/HTTP/syslog 网络传输,再到事件日志、内存缓冲与队列解

gitblog_00451的博客 783

JVM 那些事

JVM是一份本地化的程序,本质上是可执行的文件,是静态的概念。程序运行起来成为进程,是动态的概念。 java程序是跑在JVM上的,严格来讲,是跑在JVM实例上的,一个JVM实例其实就是JVM跑起来的进程,二者合起来称之为一个JAVA进程。 各个JVM实例之间是相互隔离的。 一般一个进程是一个java程序的实例。 ...

zhixingheyi_tian的博客 582
上一篇: #1438. Longest Continuous Subarray With Absolute Diff Less Than or Equal to Limit
下一篇: #1423. Maximum Points You Can Obtain from Cards
LawFile
博客等级 码龄10年 5粉丝 627原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值