首页 > 试题广场 >

开锁

[编程题]开锁
  • 热度指数:463 时间限制: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
public class Main {
    public static void main(String[] args) {
        int time=0;//次数
        String lockNumIndex="0";
        String pwdIndex="0";
        
        int qwe = 0;
        char[] chars = lockNumIndex.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            //第一种结果
            int q = Integer.parseInt(String.valueOf(chars[i])) + 10;
            int w = Integer.parseInt(String.valueOf(pwdIndex.charAt(i)));
            int abs = Math.abs(q - w);
            int i1 = abs % 10;
            //第二种结果
            int q1 = Integer.parseInt(String.valueOf(chars[i]));
            int w1 = Integer.parseInt(String.valueOf(pwdIndex.charAt(i))) + 10;
            int abs1 = Math.abs(w1 - q1);
            int i2 = abs1 % 10;
            //返回结果
            int i3 = i1 <= i2 ? i1 : i2;
            qwe += i3;
        }

         System.out.println(qwe);



    }
    
}
不给我过啥意思
发表于 2022-04-17 14:29:12 回复(0)