算法提高 开灯游戏

时间限制: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 算法提高 开灯游戏的更多相关文章

  1. Java实现 蓝桥杯VIP 算法提高 Quadratic Equation

    算法提高 Quadratic Equation 时间限制:1.0s 内存限制:512.0MB 问题描述 求解方程ax2+bx+c=0的根.要求a, b, c由用户输入,并且可以为任意实数. 输入格式: ...

  2. Java实现 蓝桥杯VIP 算法提高 研究兔子的土豪

    试题 算法提高 研究兔子的土豪 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 某天,HWD老师开始研究兔子,因为他是个土豪 ,所以他居然一下子买了一个可以容纳10^18代兔子的巨大 ...

  3. Java实现 蓝桥杯VIP 算法提高 3-2求存款

    算法提高 3-2求存款 时间限制:1.0s 内存限制:256.0MB 问题描述 见计算机程序设计基础(乔林)P50第5题. 接受两个数,一个是用户一年期定期存款金额,一个是按照百分比格式表示的利率,计 ...

  4. Java实现 蓝桥杯VIP 算法提高 3-3求圆面积表面积体积

    算法提高 3-3求圆面积表面积体积 时间限制:1.0s 内存限制:256.0MB 问题描述 接受用户输⼊的数值,输出以该值为半径的(1)圆面积,(2)球体表面积,(3)球体体积.pi 取值3.1415 ...

  5. Java实现 蓝桥杯VIP 算法提高 5-3日历

    算法提高 5-3日历 时间限制:1.0s 内存限制:256.0MB 问题描述 已知2007年1月1日为星期一.设计一函数按照下述格式打印2007年以后(含)某年某月的日历,2007年以前的拒绝打印.为 ...

  6. Java实现 蓝桥杯VIP 算法提高 11-2删除重复元素

    算法提高 11-2删除重复元素 时间限制:10.0s 内存限制:256.0MB 问题描述 为库设计新函数DelPack,删除输入字符串中所有的重复元素.不连续的重复元素也要删除. 要求写成函数,函数内 ...

  7. Java实现 蓝桥杯VIP 算法提高 P0401

    算法提高 P0401 时间限制:1.0s 内存限制:256.0MB 输入一个无符号整数x,输出x的二进制表示中1的个数. 输入: 76584 输出: 7 import java.util.Scanne ...

  8. Java实现 蓝桥杯VIP 算法提高 理财计划

    算法提高 理财计划 时间限制:1.0s 内存限制:256.0MB 问题描述 银行近期推出了一款新的理财计划"重复计息储蓄".储户只需在每个月月初存入固定金额的现金,银行就会在每个月 ...

  9. Java实现 蓝桥杯VIP 算法提高 解二元一次方程组

    算法提高 解二元一次方程组 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个二元一次方程组,形如: a * x + b * y = c; d * x + e * y = f; x,y代 ...

随机推荐

  1. [hdu1023]递推

    http://acm.hdu.edu.cn/showproblem.php?pid=1023 如果把栈里面的元素个数表示成状态,每一步(共2 * n步)的状态构成的状态序列的种数就是答案,令dp[i] ...

  2. 华为的快服务智慧平台是牛皮还是牛B?

    华为快服务智慧平台是牛皮还是牛B?   来到快服务论坛专区的老铁们想必对快服务有一定的了解,那么作为华为快服务统一接入分发核心的华为快服务智慧平台是怎样的存在呢?想必带着眼睛阅读的小伙伴都已经看出来了 ...

  3. 数据库中取出YYYY-mm-dd H:i:s的数据怎么将其转化成YYYY/mm/dd格式,另外,怎么将一个数据表中的数据插入另一个数据表

    sql语句是select  left(replace(rq,'-','/'),10) as rq from 表名 tp5.1中的写法 $res = Db::table('表名') ->field ...

  4. layui批量传值到后台操作时出现传值为空的问题

    如图,前台的样子,data的参数为 [ {"good_id":1,"good_name":"标样-总磷","good_num&qu ...

  5. java -> equals方法与toString方法

    equals方法 equals方法,用于比较两个对象是否相同,它其实就是使用两个对象的内存地址在比较.Object类中的equals方法内部使用的就是==比较运算符(比较内存地址). 在开发中要比较两 ...

  6. .Net Core3.0 WebApi 项目框架搭建 二:API 文档神器 Swagger

    .Net Core3.0 WebApi 项目框架搭建:目录 为什么使用Swagger 随着互联网技术的发展,现在的网站架构基本都由原来的后端渲染,变成了:前端渲染.后端分离的形态,而且前端技术和后端技 ...

  7. HBase Filter 过滤器之 ValueFilter 详解

    前言:本文详细介绍了 HBase ValueFilter 过滤器 Java&Shell API 的使用,并贴出了相关示例代码以供参考.ValueFilter 基于列值进行过滤,在工作中涉及到需 ...

  8. mybatis 分页失败 始终pageSize = 2147483647

    是在使用分页查询时 this.jobReadMapper.beginPager(pageParam);XXXXXXXXXXXXXXXXXXXXXXXXthis.xxxReadMapper.queryB ...

  9. zabbix配置主动式监控的步骤(原创)

    步骤如下: 1.克隆模板.命名新的模板名,并点击"监控项",全选,批量更新时第一个“类型”打勾,客户端改为主动式: 2.添加客户端或更改原有的模板为新模板(服务器端添加客户端时的配 ...

  10. 按图索骥,一些mysql知识点

    有事没事多看看 基础知识考察 基础知识,尤其是一些理论知识,例如: MySQL有哪些索引类型,这是个半开放式命题: 从数据结构角度可分为B+树索引.哈希索引.以及不常用的FULLTEXT索引(现在My ...