题目描述
有9盏灯与9个开关,编号都是1~9。

每个开关能控制若干盏灯,按下一次会改变其控制的灯的状态(亮的变成不亮,不亮变成亮的)。

具体如下:

第一个开关控制第二,第四盏灯;

第二个开关控制第一,第三,第五盏灯;

第三个开关控制第二,第六盏灯;

第四个开关控制第一,第五,第七盏灯;

第五个开关控制第二,第四,第六,第八盏灯;

第六个开关控制第三,第五,第九盏灯;

第七个开关控制第四,第八盏灯;

第八个开关控制第五,第七,第九盏灯;

第九个开关控制第六,第八盏灯。

开始时所有灯都是熄灭的,开关是关闭着的。要求按下若干开关后,使得只有4盏灯亮着。
输入

输出
输出所有可能的方案,每行一个方案,每一行有9个字符,从左往右第i个字符表示第i个开关的状态(" 0" 表示关闭," 1" 表示打开),按字典序输出。下面的样例输出只是部分方案。
样例输入

样例输出

000001011
000001110
000001111

解题思路:
直接模拟!!!

代码如下:

#include <iostream>
#include <cstring>
using namespace std;
const int N = 13;
int a[N];//灯,1为亮,0为暗
int press[N];//是否按,1为按,0为不按void check() {for (int i = 1; i <= 9; i++)if (press[i])if (i == 1) {a[2] = !a[2];a[4] = !a[4];} else if (i == 2) {a[1] = !a[1];a[3] = !a[3];a[5] = !a[5];} else if (i == 3) {a[2] = !a[2];a[6] = !a[6];} else if (i == 4) {a[1] = !a[1];a[5] = !a[5];a[7] = !a[7];} else if (i == 5) {a[2] = !a[2];a[4] = !a[4];a[6] = !a[6];a[8] = !a[8];} else if (i == 6) {a[3] = !a[3];a[5] = !a[5];a[9] = !a[9];} else if (i == 7) {a[4] = !a[4];a[8] = !a[8];} else if (i == 8) {a[5] = !a[5];a[7] = !a[7];a[9] = !a[9];} else if (i == 9) {a[6] = !a[6];a[8] = !a[8];}int cnt = 0;for (int i = 1; i <= 9; i++) {if (a[i])cnt++;}if (cnt == 4) {for (int i = 1; i <= 9; i++) {cout << press[i];}cout << endl;}
}void dfs(int u) {if (u == 10) {check();memset(a, 0, sizeof(a));return ;}for (int i = 0; i < 2; i++) {press[u] = i;dfs(u + 1);}
}int main() {dfs(1);return 0;
}

[蓝桥杯][算法提高VIP]开灯游戏-dfs相关推荐

  1. [蓝桥杯][算法提高VIP]开灯游戏(dfs)

    题目描述 有9盏灯与9个开关,编号都是1~9. 每个开关能控制若干盏灯,按下一次会改变其控制的灯的状态(亮的变成不亮,不亮变成亮的). 具体如下: 第一个开关控制第二,第四盏灯: 第二个开关控制第一, ...

  2. c语言oj题1923偶数之和,问题 1923: [蓝桥杯][算法提高VIP]学霸的迷宫 (BFS)

    题目描述 学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗.但学霸为了不要别人打扰,住在一个城堡里,城堡外面是一个二维的格子迷宫,要进城堡必须得先通过迷宫.因为班长还有妹子要陪,磨刀不 ...

  3. [蓝桥杯][算法提高VIP]夺宝奇兵-递推+记忆化搜索

    题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 " ...

  4. [蓝桥杯][算法提高VIP]夺宝奇兵-dp

    题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 " ...

  5. [蓝桥杯][算法提高VIP]阮小二买彩票

    [蓝桥杯][算法提高VIP]阮小二买彩票 题目描述 在同学们的帮助下,阮小二是变的越来越懒了, 连算账都不愿意自己亲自动手了,每天的工作就是坐在电脑前看自己的银行账户的钱是否有变多.可是一段时间观察下 ...

  6. [蓝桥杯][算法提高VIP]阮小二买彩票[递归全排列]

    题目 1578: [蓝桥杯][算法提高VIP]阮小二买彩票 时间限制: 1Sec 内存限制: 128MB 提交: 348 解决: 153 题目描述 在同学们的帮助下,阮小二是变的越来越懒了, 连算账都 ...

  7. [蓝桥杯][算法提高][vip] 阮小二买彩票

    蓝桥杯 ADV-66 算法提高 阮小二买彩票 问题描述 在同学们的帮助下,阮小二是变的越来越懒了,连算账都不愿意自己亲自动手了,每天的工作就是坐在电脑前看自己的银行账户的钱是否有变多.可是一段时间观察 ...

  8. [蓝桥杯][算法提高VIP]合并石子(区间dp+平行四边形优化)

    题目描述 在一条直线上有n堆石子,每堆有一定的数量,每次可以将两堆相邻的石子合并,合并后放在两堆的中间位置,合并的费用为两堆石子的总数.求把所有石子合并成一堆的最小花费. 输入 输入第一行包含一个整数 ...

  9. 摩尔斯电码的c语言程序,[蓝桥杯][算法提高VIP]摩尔斯电码 (C语言代码)

    解题思路: 录入,分段,比较 注意事项: 不要去关注最后的几句话,完全误导人,我用getchar()结合EOF做得出来,但是提交总是报错,蓝桥杯官网和C语言网都一样. 参考代码:#include #i ...

最新文章

  1. kafka实现异步发送_Kafka 异步消息也会阻塞?记一次 Dubbo 频繁超时排查过程
  2. AI到底如何改变教育?好未来重金押注AI的背后逻辑
  3. nginx+memcache+tomcat配置(新手笔记)
  4. yolov3 python_Python 3 Keras YOLO v3解析与实现
  5. mysql scrapy 重复数据_大数据python(scrapy)爬虫爬取招聘网站数据并存入mysql后分析...
  6. 2 小时学会 springboot ( 附实例讲解 )
  7. SpringMVC前传--从Struts 1.x-2.x MVC-Spring 3.0 MVC
  8. Django中的admin
  9. 动态规划C语言实现之最长公共子序列(LCS)
  10. jquery html 动态添加元素绑定事件
  11. 手把手教你搭建Android开发环境
  12. UE4 讯飞语音识别插件
  13. 随风摇曳的她——美蕨(matlab实现)
  14. 小米手机play商店无法下载
  15. 数字三角形的多种解法思路
  16. 2025年,我的人生全被互联网巨头垄断了
  17. jq+css3树叶飘散特效
  18. VS 2019 C++ 如何在非控制台程序中打开控制台
  19. 二维数组横向和纵向遍历的巨大差距:缺页问题
  20. 如何统计每个小时用户在线人数?

热门文章

  1. ArcGIS实验教程——实验五:空间数据编辑
  2. C语言九十六之实现经典的字符串反转(通过指针或下标操作)
  3. Android Studio之提示Gradle sync failed: Plugin with id ‘com.novoda.bintray-release‘ not found.
  4. LeetCode之Hamming Distance
  5. Android之录音--AudioRecord、MediaRecorder
  6. Spring MVC 中 HandlerInterceptorAdapter过滤器的使用
  7. 双网卡上网冲突解决_【技术文章】局域网IP地址冲突罪魁祸首是什么?这几点要注意!(附高手处理方法)...
  8. 13个圆可以画什么?数学与艺术完美邂逅!原来数学也可以这么美
  9. 在线交友背后的数学原理
  10. 数学学得好,才可以发现别人发现不了的挣钱良机