3196 - 编程实现:密码锁

题目描述

密码锁:由 n 个从左到右并排的圆环组成,每个圆环上都有 10 个数字(0~9),蓝色框内为密码显示区, 每个圆环在密码显示区只能显示一个数字,如图所示。可以拨动圆环,来改变密码显示区显示的数字。 当密码显示区的数字与密码一致时,密码锁就会被打开。

题目描述: 有一个由 n 个圆环组成的密码锁,和一个 n 位的密码 S( S 由 1~9 中的数字(包含 1 和 9)组成)。 每次操作只能选择一个或位置连续的多个圆环拨动,当 S 中的字符从左到右依次显示在密码显示区时,密 码锁会被打开。 已知每个圆环在密码显示区初始数字都为0,请计算出最少需要操作多少次,才能打开密码锁。

注意: 1、如果选择了其中一个圆环,可将该圆环中任意一个数字拨动到密码显示区,表示 1 次操作; 例如:将第 3 个圆环拨动到数字 4,表示 1 次操作:

2、如果选择了位置连续的多个圆环,只能将这些圆环拨动成同一个数字,显示在密码显示区,表示 1 次操 作。 例如:将连续的第 2 个到第 3 个圆环都拨动到数字 5,表示 1 次操作:

例如: n = 5,S = "12321";分别表示 5 个圆环组成的密码锁和密码 12321;将 5 位密码 1、2、3、2、1 从左到右依次显示在密码显示区,以下是操作最少次数的方案: 第一次操作,将 5 个初始状态为 0 的圆环全部拨动到数字 1:

第二次操作,将第 2 个到第 4 个圆环全部拨动到数字 2:

第三次操作,将第 3 个圆环拨动到数字 3:

最少需要操作 3 次,才能打开密码锁。

输入

第一行输入一个整数 n(1≤n≤100),表示组成的密码锁的圆环数及密码的位数 第二行输入一个长度为 n 的字符串 S,S 由1~9中的数字(包含1和9)组成,表示密码

输出

输出一个整数,表示最少需要操作多少次,才能打开密码锁

样例

输入

5
12321

输出

3
标签
题目参数
时间限制 1 秒
内存限制 512 MB
提交次数 16
通过人数 4
金币数量 5 枚
难度 提高


上一题 下一题