费解的开关

描述:
你玩过“拉灯”游戏吗?25盏灯排成一个5x5的方形。每一个灯都有一个开关,游戏者可以改变它的状态。每一步,游戏者可以改变某一个灯的状态。游戏者改变一个灯的状态会产生连锁反应:和这个灯上下左右相邻的灯也要相应地改变其状态。

我们用数字“1”表示一盏开着的灯,用数字“0”表示关着的灯。下面这种状态

10111
01101
10111
10000
11011

在改变了最左上角的灯的状态后将变成:

01111
11101
10111
10000
11011

再改变它正中间的灯后状态将变成:

01111
11001
11001
10100
11011

给定一些游戏的初始状态,编写程序判断游戏者是否可能在6步以内使所有的灯都变亮。

输入格式

第一行有一个正整数n,代表数据中共有n个待解决的游戏初始状态。
以下若干行数据分为n组,每组数据有5行,每行5个字符。每组数据描述了一个游戏的初始状态。各组数据间用一个空行分隔。
对于30%的数据,n<=5;
对于100%的数据,n<=500。

输出格式
输出数据一共有n行,每行有一个小于等于6的整数,它表示对于输入数据中对应的游戏状态最少需要几步才能使所有灯变亮。
对于某一个游戏初始状态,若6步以内无法使所有灯变亮,请输出“-1”。

输入样例:

3
00111
01011
10001
11010
1110011101
11101
11110
11111
1111101111
11111
11111
11111
11111

输出样例:

3
2
-1


分析

在这运用的主要运用的方法是位运算
注意的一些点都放在代码里了,有兴趣的同学可以运行一下
这一题主要的思想路线:(希望大家看看)

这一题的总体思路就是枚举第一排由于性质来说其实一个按钮如果按偶数次其实是没有用处的(会复原),
所以可以推出其实每个按钮就按过一次,通过前一排灯光的状态来决定开关的操作,
通过对第一排的全排会产生一些关闭的开关(还会有连带的关系),所以在第二排把第一排的关闭按钮下面按一次,
以此类推~~~~~~在第四排对应关闭的下面按依次,
最后特判一次第五排如果都是开着的就成功和之前的步数进行比较,取小的值.

代码以及连带关系的介绍

这是我的代码(还是有些地方会冗余

费解的开关解析 C++【递推+位运算】相关推荐

  1. 费解的开关(位运算+递推)

    题目描述: 你玩过"拉灯"游戏吗?25盏灯排成一个5x5的方形.每一个灯都有一个开关,游戏者可以改变它的状态.每一步,游戏者可以改变某一个灯的状态.游戏者改变一个灯的状态会产生连锁 ...

  2. 《算法竞赛进阶指南》打卡-基本算法-AcWing 95. 费解的开关:位运算、枚举、递推

    文章目录 题目解答 题目来源 题目解答 分析: 枚举第一行,指的是第一行哪些位置要切换状态!!!.第一行总共有5个数,组合数是32,即第一行哪些位置要切换总共有32种情况.这就是我们的枚举空间.比如, ...

  3. C++费解的开关(递推,位运算)

    你玩过"拉灯"游戏吗?25盏灯排成一个5x5的方形.每一个灯都有一个开关,游戏者可以改变它的状态.每一步,游戏者可以改变某一个灯的状态.游戏者改变一个灯的状态会产生连锁反应:和这个 ...

  4. 蓝桥杯python省赛冲刺篇2——常用算法的详细解析及对应蓝桥杯真题:打表模拟法、递推递归法、枚举法、贪心算法、差分与前缀和

    注意:加了题目链接 目录 注意:加了题目链接 一.打表模拟法 介绍 1. 算式问题 题目描述 解析与代码演示 2. 求值 题目描述 解析与代码演示 3. 既约分数 题目描述 解析与代码演示 4. 天干 ...

  5. HYSBZ(BZOJ) 4300 绝世好题(位运算,递推)

    HYSBZ(BZOJ) 4300 绝世好题(位运算,递推) Description 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<= ...

  6. 338 比特位计数(动态规划-递推)

    1. 问题描述: 给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. 示例 1: 输入: 2 输出: [0,1,1] ...

  7. 0x02.基本算法 — 递推与递归

    目录 一.递推与递归 二.分治 三.模拟计算机实现递归 四.相应习题: 0.AcWing 92. 递归实现指数型枚举(递归/循环+位运算) 1.AcWing 93. 递归实现组合型枚举 2.AcWin ...

  8. 第一章:递推与递归 【完结】

    目前,这一章都已经熟练掌握了. 目录 92. 递归实现指数型枚举 [板子题] 94. 递归实现排列型枚举 [板子题] 93. 递归实现组合型枚举[板子题] 717. 简单斐波那契 [简单 / 递推] ...

  9. 基本算法之递推与递归的简单应用

    递推与递归的简单应用 常见的枚举形式 实现指数型枚举 DFS (一) DFS (二) 位运算(一) 位运算(二) 实现组合型枚举 DFS + 剪枝 实现排列型枚举 DFS 费解的开关 奇怪的汉诺塔 分 ...

  10. 递归与递推类型题小结

    文章目录 1. 递归 1.1 解题思想 1.2 例题1(指数型枚举) 题意: 思路: 递归树模型: 时间复杂度: 代码实现: 1.3 例题2(排列型枚举) 题意: 思路: 递归树模型: 时间复杂度分析 ...

最新文章

  1. (译)360全景视频制作专题-介绍
  2. Project Tungsten:让Spark将硬件性能压榨到极限
  3. 同步异步网络搜集到的比喻
  4. 渴望 英语_渴望订阅– RxJava常见问题解答
  5. ACM常用数列(斐波那契数列、卡特兰数、贝尔数、斯特灵数)
  6. matlab计算三角格网面积,不规则平面图形的面积计算及其MATLAB实现.doc
  7. crontab 每天凌晨12点定时器_双十一预售:李佳琦薇娅凌晨12:00点,观看次数双双破亿...
  8. [文档].Altera - Nios II Flash Programmer用户指南
  9. 记录一下idea启动显示If you already have a 64-bit JDK installed ,defined a JAVA_HOME...的错误
  10. Elastic官方网络研讨会视频列表
  11. Linux- 什么是PID?
  12. 二元置信椭圆r语言_医学统计与R语言:Meta 回归作图(Meta regression Plot)
  13. 【信息检索导论】第一章 布尔检索
  14. LINUX彻底清除历史记录命令
  15. 新生儿住月子中心20天患败血症 什么是败血症?有哪些危害
  16. 【剑指 Offe】剑指 Offer 18. 删除链表的节点
  17. Python学习笔记_获取猫耳广播剧
  18. ug8.5的java下载_ug8.5下载 UG NX8.5正式版 64位 官方版 下载-脚本之家
  19. 虚拟机安装linux
  20. 初级爬虫-获取网络图片

热门文章

  1. MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)
  2. 信息学奥赛一本通:1132:石头剪子布
  3. shell 中#!/bin/sh 的意思
  4. 记录MYSQL死锁日志分析
  5. 使用阿里云OSS上传本地资源(图片、文件、音频、视频)
  6. Ardunio开发实例-OPT3001数字环境光传感器
  7. 手机浏览器onclick事件不能跳转页面
  8. .Net Core学习笔记(二)MVC框架
  9. Photoshop基础学习-修改图片文字
  10. 通过微信传文件在服务器保留几天,微信发送文件多久会失效