Java实现 蓝桥杯VIP 算法提高 开灯游戏
算法提高 开灯游戏
时间限制:1.0s 内存限制:256.0MB
问题描述
有9盏灯与9个开关,编号都是1~9。
每个开关能控制若干盏灯,按下一次会改变其控制的灯的状态(亮的变成不亮,不亮变成亮的)。
具体如下:
第一个开关控制第二,第四盏灯;
第二个开关控制第一,第三,第五盏灯;
第三个开关控制第二,第六盏灯;
第四个开关控制第一,第五,第七盏灯;
第五个开关控制第二,第四,第六,第八盏灯;
第六个开关控制第三,第五,第九盏灯;
第七个开关控制第四,第八盏灯;
第八个开关控制第五,第七,第九盏灯;
第九个开关控制第六,第八盏灯。
开始时所有灯都是熄灭的,开关是关闭着的。要求按下若干开关后,使得只有4盏灯亮着。
输出格式
输出所有可能的方案,每行一个方案,每一行有9个字符,从左往右第i个字符表示第i个开关的状态("0"表示关闭,"1"表示打开),按字典序输出。下面的样例输出只是部分方案。
样例输出
000001011
000001110
000001111
public class 开灯游戏 {
static final int LEN = 10;
static int[] arr = new int[LEN];
static int[] b;
public static void main(String[] args) {
dfs(1);
}
private static void dfs(int index) {
if (index >= LEN) {
display();
return;
}
arr[index] = 0;
dfs(index + 1);
arr[index] = 1;
dfs(index + 1);
}
private static void display() {
b = new int[LEN];
for (int i = 1; i < LEN; i++) {
if (arr[i] == 1)
change(i);
}
int sum = 0;
for (int i = 1; i < LEN; i++) {
if (b[i] == 1)
sum++;
if (sum > 4)
return;
}
if (sum == 4) {
for (int i = 1; i < LEN; i++) {
System.out.print(arr[i]);
}
System.out.println();
}
}
private static void change(int i) {
switch (i) {
case 1:
b[2] = b[2] == 0 ? 1 : 0;
b[4] = b[4] == 0 ? 1 : 0;
break;
case 2:
b[1] = b[1] == 0 ? 1 : 0;
b[3] = b[3] == 0 ? 1 : 0;
b[5] = b[5] == 0 ? 1 : 0;
break;
case 3:
b[2] = b[2] == 0 ? 1 : 0;
b[6] = b[6] == 0 ? 1 : 0;
break;
case 4:
b[1] = b[1] == 0 ? 1 : 0;
b[5] = b[5] == 0 ? 1 : 0;
b[7] = b[7] == 0 ? 1 : 0;
break;
case 5:
b[2] = b[2] == 0 ? 1 : 0;
b[4] = b[4] == 0 ? 1 : 0;
b[6] = b[6] == 0 ? 1 : 0;
b[8] = b[8] == 0 ? 1 : 0;
break;
case 6:
b[3] = b[3] == 0 ? 1 : 0;
b[5] = b[5] == 0 ? 1 : 0;
b[9] = b[9] == 0 ? 1 : 0;
break;
case 7:
b[4] = b[4] == 0 ? 1 : 0;
b[8] = b[8] == 0 ? 1 : 0;
break;
case 8:
b[5] = b[5] == 0 ? 1 : 0;
b[7] = b[7] == 0 ? 1 : 0;
b[9] = b[9] == 0 ? 1 : 0;
break;
case 9:
b[6] = b[6] == 0 ? 1 : 0;
b[8] = b[8] == 0 ? 1 : 0;
break;
}
}
}
Java实现 蓝桥杯VIP 算法提高 开灯游戏的更多相关文章
- Java实现 蓝桥杯VIP 算法提高 Quadratic Equation
算法提高 Quadratic Equation 时间限制:1.0s 内存限制:512.0MB 问题描述 求解方程ax2+bx+c=0的根.要求a, b, c由用户输入,并且可以为任意实数. 输入格式: ...
- Java实现 蓝桥杯VIP 算法提高 研究兔子的土豪
试题 算法提高 研究兔子的土豪 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 某天,HWD老师开始研究兔子,因为他是个土豪 ,所以他居然一下子买了一个可以容纳10^18代兔子的巨大 ...
- Java实现 蓝桥杯VIP 算法提高 3-2求存款
算法提高 3-2求存款 时间限制:1.0s 内存限制:256.0MB 问题描述 见计算机程序设计基础(乔林)P50第5题. 接受两个数,一个是用户一年期定期存款金额,一个是按照百分比格式表示的利率,计 ...
- Java实现 蓝桥杯VIP 算法提高 3-3求圆面积表面积体积
算法提高 3-3求圆面积表面积体积 时间限制:1.0s 内存限制:256.0MB 问题描述 接受用户输⼊的数值,输出以该值为半径的(1)圆面积,(2)球体表面积,(3)球体体积.pi 取值3.1415 ...
- Java实现 蓝桥杯VIP 算法提高 5-3日历
算法提高 5-3日历 时间限制:1.0s 内存限制:256.0MB 问题描述 已知2007年1月1日为星期一.设计一函数按照下述格式打印2007年以后(含)某年某月的日历,2007年以前的拒绝打印.为 ...
- Java实现 蓝桥杯VIP 算法提高 11-2删除重复元素
算法提高 11-2删除重复元素 时间限制:10.0s 内存限制:256.0MB 问题描述 为库设计新函数DelPack,删除输入字符串中所有的重复元素.不连续的重复元素也要删除. 要求写成函数,函数内 ...
- Java实现 蓝桥杯VIP 算法提高 P0401
算法提高 P0401 时间限制:1.0s 内存限制:256.0MB 输入一个无符号整数x,输出x的二进制表示中1的个数. 输入: 76584 输出: 7 import java.util.Scanne ...
- Java实现 蓝桥杯VIP 算法提高 理财计划
算法提高 理财计划 时间限制:1.0s 内存限制:256.0MB 问题描述 银行近期推出了一款新的理财计划"重复计息储蓄".储户只需在每个月月初存入固定金额的现金,银行就会在每个月 ...
- Java实现 蓝桥杯VIP 算法提高 解二元一次方程组
算法提高 解二元一次方程组 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个二元一次方程组,形如: a * x + b * y = c; d * x + e * y = f; x,y代 ...
随机推荐
- [hdu2087]kmp水题
题意:求模板串在文本串中出现的次数(位置无交叉).只需在找到的时候把模板串指针归0即可. #pragma comment(linker, "/STACK:10240000,10240000& ...
- Nuget一键打包上传以及高级应用
Nuget是什么不用多说,大家应该也没少用过Nuget, 不少人也应该使用过工具打Nuget包,接下来先一步步说明如何使用脚本完成Nuget一键打包 Nuget一键打包 配置Nuget环境 下载地址: ...
- Java SPI机制简述
概述 SPI全称Service Provider Interface,是一种为框架提供良好扩展性的机制.一般由框架开发方定义接口规范(如java.sql.Driver),而第三方厂商为之提供自己的实现 ...
- php反序列化(昨天的补充)
魔术方法 在对PHP反序列化进行利用时,经常需要通过反序列化中的魔术方法,检查方法里是否有敏感操作来进行利用. 常见方法: 创建对象时触发:__construct() 对象被销毁时触发:__destr ...
- node mysql模块写入中文字符时的乱码问题
刚刚发现一个奇怪的问题: 在node上用mysql模块将数据写入数据库的时候,在cmd上打开mysql发现select出来的中文是乱码.但这就奇怪了. 因为本机在安装mysql的时候就已经在配置文件将 ...
- Aangular 父子间组件传递
1.父子间组件传递------重点&难点 Vue.js和Angular中的父子间消息传递原理一样,都可以用口诀: “Props Down,Events Up” 方向1:父 =>子 父组件 ...
- Djano之ORM多表查询操作
# 把 model 转化为 迭代器去循环 MODEL.objects.all().iterator() # 等同于 values, values_list, 但是 only 这种方式 获取字段属性依旧 ...
- Spring Bean 后置处理器
Bean 后置处理器允许在调用初始化方法前后对 Bean 进行额外的处理. BeanPostProcessor 接口定义回调方法,你可以实现该方法来提供自己的实例化逻辑,依赖解析逻辑等. 你也可以在 ...
- 仿开源框架从零到一完整实现高性能、可扩展的RPC框架 | 6个月做成教程免费送
去年年就在写一本付费小册,今年年初基本上就写完了,本来预计计划是春节上线结果由于平台的原因一直拖着没上.五一前跟平台联系给的反馈是五月份能上,结果平台又在重构,停止小册的申请和上线,最后我考虑了一下决 ...
- Java——变量自增(++)自减(--)
//运算符在操作数之后,称为“后增量”.i变量自增,返回自增之前的值;//运算符在操作数之前,称为“前增量”.i变量自增,返回自增之后的值.//自减同理 public static void test ...