AILAB专项训练

问题描述

你获得了一个据说是古代玛雅人制作的箱子。你非常想打开箱子看看里面有什么东西,但是不幸的是,正如所有故事里一样,神秘的箱子出现的时候总是会挂着神秘的锁。
  这个锁上面看起来有 N 个数字,它们排成一排,并且每个数字都在 0 到 2 之间。你发现你可以通过锁上的机关来交换相邻两个数字的顺序。比如,如果原来有 5 个数字 02120,在一次交换以后你就可以得到 20120,01220,02210 或者 02102。
  根据你所搜集的情报,这个锁在上面存在某连续四个数字是“2012”的时候会自动打开。现在,你需要计算一下,你至少需要进行多少次交换操作才能打开这把锁?

输入格式

输入数据的第一行有一个正整数 N。(4 ≤ N ≤ 13) 输入数据的第二行有 N 个数字 a1,a2, …, aN ,其中 ai 表示这个锁上面第 i 个数字的值,满足 0 ≤ ai ≤ 2。这些数字之间没有空格分隔。

输出格式

你只需要输出一个数字,即你至少需要的交换次数。如果无论如何都没有希望打开这把锁,输出 -1。

样例输入

5
02120

样例输出

1

对样例的解释

把前两个数字交换以后,锁上的数字是 20120,其中存在连续四个数字2, 0, 1, 2,因此锁会打开。

import java.util.HashSet;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
import java.util.Set;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = Integer.parseInt(sc.nextLine());String num = sc.nextLine();if (!num.contains("2") || !num.contains("0") || !num.contains("1")|| num.indexOf("2") == num.lastIndexOf("2")) {System.out.println(-1);return;}Queue<String> que = new LinkedList<String>();Set<String> hashSet = new HashSet<String>();que.add(num);int count = 0;while (!que.isEmpty()) {int size = que.size();for (int i = 0; i < size; i++) {String poll = que.poll();if (poll.contains("2012")) {System.out.println(count);return;}char[] arr = poll.toCharArray();for (int j = 0; j < arr.length - 1; j++) {swap(arr, j, j + 1);String valueOf = String.valueOf(arr);if (!hashSet.contains(valueOf)) {que.add(valueOf);hashSet.add(valueOf);}swap(arr, j, j + 1);}}count++;}System.out.println(-1);}private static void swap(char[] arr, int j, int i) {arr[j] = (char) (arr[j] ^ arr[i]);arr[i] = (char) (arr[i] ^ arr[j]);arr[j] = (char) (arr[j] ^ arr[i]);}}

蓝桥 密码锁(Java)相关推荐

  1. java蓝桥杯凑算是,第七届蓝桥杯JAVA B组真题解析-凑算式(第三题)

    第七届蓝桥杯JAVA B组真题解析-凑算式(第三题) 凑算式 A+B/C+DEF/GHI =10 (如果显示有问题,可以参见[图1.jpg]) 这个算式中AI代表19的数字,不同的字母代表不同的数字. ...

  2. 蓝桥杯Java历年真题与答案_蓝桥杯大赛java历年真题及答案整理(闭关一个月呕心沥血整理出来的)...

    蓝桥杯大赛java历年真题及答案整理(闭关一个月呕心沥血整理出来的) 1蓝桥杯 java 历年真题及答案整理(闭关一个月,呕心沥血整理出来的)1. 算法是这样的,如果给定 N 个不同字符,将这 N 个 ...

  3. 2015年 第06届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  4. 2016年 第07届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  5. 2017年 第08届 蓝桥杯 Java B组 决赛真题详解及小结

    ​​​​​蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 ...

  6. 2018年 第09届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  7. 2019年 第10届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  8. 2020年 第11届 蓝桥杯 Java B组 省赛真题详解及小结【第1场省赛 2020.7.5】

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:部分 ...

  9. 2020年 第11届 蓝桥杯 Java C组 省赛真题详解及小结【第1场省赛 2020.7.5】

    蓝桥杯 Java B组 省赛真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 注意:部分代码及程序 源自 蓝桥杯 官网视频(历年真题解析) 郑未老师. 2013年 第04届 蓝桥杯 ...

  10. 蓝桥杯 Java B组 省赛决赛模拟赛 详解及小结汇总+题目下载【2013年(第4届)~2021年(第12届)】

    蓝桥杯 Java B组 省赛决赛模拟赛 详解及小结汇总+题目下载[2013年(第4届)~2021年(第12届)] 百度网盘-CSDN蓝桥杯资料(真题PDF+其它资料)   提取码:6666 2013年 ...

最新文章

  1. 劳动节特别活动,钉钉、支付宝合种,2-4天领证,限量9个名额
  2. mysql排序空放后面_python对mysql数据库的增删改查
  3. SAP Spartacus里的routerLink测试
  4. html使用element ui_Kendo UI for jQuery使用教程:自定义小部件(二)
  5. 如何在Appscale下发布自己的应用(一)
  6. 嗨淘V12刷任务点赞系统源码手动派单版本
  7. python2 python3共存导致conda报错_Windows运维之Windows10下配置Python2和Python3共存 并用anaconda实现方便的包管理...
  8. 全球每天产生100篇机器学习新论文!谷歌大脑负责人Jeff Dean发推引热议,网友:太浪费时间...
  9. BZOJ 1878: [SDOI2009]HH的项链【莫队】
  10. jsmind 线条_jsmind/2.options.md at master · hizzgdev/jsmind · GitHub
  11. 一文说清长安链ChainMaker同步模块
  12. 在B站看猫片被老板发现?不如按下F12学学HTTP
  13. “海纳百川”下载器的使用方法
  14. java字符串 与 ASCII码相互转换
  15. AD18系统设置界面各层详解
  16. 从用户个体的角度,谈微信群吱口令红包
  17. 电影“防火墙” 引发的黑客攻击迅雷(转)
  18. GC Garbage Collectors
  19. spring源码分析系列(二)AOP应用
  20. 【vcruntime140.dll文件下载】vcruntime140.dll丢失的解决方法

热门文章

  1. 线段树辅助——扫描线法计算矩形面积并
  2. 【LaTeX笔记12】Latex分栏布局及模板使用
  3. uniapp 获取网络状态_uni-app 获取网络状态
  4. 焦虑症和抑郁症的区别
  5. Jackson ImmunoResearch普通羊驼血清说明书
  6. DeepFashion2: 一个针对衣服图片的检测、姿态估计、分割和重认证多用途基准
  7. Unity Recorder 插件录屏--简单小记
  8. 在线靶场-墨者-网络安全2星-某防火墙默认口令
  9. 两个龙的linux,Linux办公一条龙之组件间的调用
  10. 经典计算机书籍-自制系列