首页 > 试题广场 >

开锁

[编程题]开锁
  • 热度指数:465 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小明是一位宝石收藏家,他搜集了非常多的名贵宝石,并且把它们保存在一个保险箱当中,这个保险箱有100层保险,前99层都是魔法封印,最后一层却是相当朴素的锁。这个锁由n个圆环顺序排列而成,每个圆环上都从小到大顺序雕刻着0到9这10个数字。每一次操作,小明可以向前旋转一个圆环的一位数字,或者向后旋转一个圆环的一位数字。数字变化的顺序是0到9再到0,也可以是9到0再到9。给出开锁的密码和当前密码锁的状态,问最少需要多少次操作可以开锁?

输入描述:
第一行一个数字n,表示圆环的个数;

第二行一个字符串,长度为n,表示圆环当前的状态;

第三行一个字符串,长度为n,表示开锁的密码。

满足1 <= n <= 1000。


输出描述:
最少的操作次数。
示例1

输入

3
123
321

输出

4
示例2

输入

4
0792
9470

输出

8
头像 大厂算法岗必拿下
发表于 2021-09-02 19:28:10
一般相减得情况下,就不许需要直接转过去。 两个方向,综合取最小。加10就是为了负数补全,然后取余就是为了防止超出值。res += min((s[i] - t[i] + 10) % 10, (t[i] - s[i] + 10) % 10); #include<bits/stdc++.h> 展开全文

热门推荐

通过挑战的用户

开锁