| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> AcWing 95. 费解的开关 (递归&位运算 详解) -> 正文阅读 |
|
[数据结构与算法]AcWing 95. 费解的开关 (递归&位运算 详解) |
你玩过“拉灯”游戏吗? 2525?盏灯排成一个?5×55×5?的方形。 每一个灯都有一个开关,游戏者可以改变它的状态。 每一步,游戏者可以改变某一个灯的状态。 游戏者改变一个灯的状态会产生连锁反应:和这个灯上下左右相邻的灯也要相应地改变其状态。 我们用数字?11?表示一盏开着的灯,用数字?00?表示关着的灯。 下面这种状态
在改变了最左上角的灯的状态后将变成:
再改变它正中间的灯后状态将变成:
给定一些游戏的初始状态,编写程序判断游戏者是否可能在?66?步以内使所有的灯都变亮。 输入格式 第一行输入正整数?nn,代表数据中共有?nn?个待解决的游戏初始状态。 以下若干行数据分为?nn?组,每组数据有?55?行,每行?55?个字符。 每组数据描述了一个游戏的初始状态。 各组数据间用一个空行分隔。 输出格式 一共输出?nn?行数据,每行有一个小于等于?66?的整数,它表示对于输入数据中对应的游戏状态最少需要几步才能使所有灯变亮。 对于某一个游戏初始状态,若?66?步以内无法使所有灯变亮,则输出??1?1。 数据范围 0<n≤5000<n≤500 输入样例:
输出样例:
解题思路:根据第一行已有的数据 我们可以有2的5次方次按法 (选择按还是不按),然后根据我们的按法变化的数据; 从头开始去进行查询、改变灯的状态,因为你每次操作肯定会把前四行的灯都弄亮,我们的第五行的数据就没有办法再进行变化了,所以我们最后只需要判断最后一行灯是否全亮。如果可以完成的话 我们只需要把完成的次数存下来,存最小的数就行了。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 具体可以看代码里面的注释。 AC
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 11:27:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |