费解的开关

费解的开关

模拟一下开关的过程:

直接对第一行进行开关灯即可,那么第一行开关等的方案有多少个呢?

可以第一个想到的是5次,但实际上是25次,因为没有规定说只能开关一次吧。

那么如何获得这32种方案呢?

可以通过二进制来获得,我们知道0~31刚好是32个数字,而对应的二进制序列也是从00000~11111,这不就是一种排列吗?

00000
00001
00010
00010
00011
00100
00101
00110
00111
.
.
.
.
.
11111

其中1表示需要开关灯

#include<iostream>
#include<cstring>
#include<limits.h>
#include<algorithm>using namespace std;
const int N = 6;
int n;
char g[N][N], backup[N][N];
int dx[N] = { -1, 0, 1, 0, 0 }, dy[N] = { 0, 1, 0, -1, 0 };
//上、右、下、左、自己
//修改上下左右的灯的情况
void turn(int x, int y)
{for (int i = 0; i < 5; i++){int ax = x + dx[i], ay = y + dy[i];if (ax < 0 || ax >= 5 || ay < 0 || ay >= 5) continue;if (g[ax][ay] == '0')g[ax][ay] = '1';else g[ax][ay] = '0';}
}int dfs(char g[6][6])
{int step = 0;for (int i = 0; i < 4; i++){for (int j = 0; j < 5; j++){if (g[i][j] == '0'){turn(i + 1, j);step++;}}}return step;
}bool check()
{for (int j = 0; j < 5; j++){if (g[4][j] == '0')return false;}return true;
}int main(void)
{cin >> n;while (n--){int res = INT_MAX;bool ch = false;for (int i = 0; i < 5; i++) cin >> g[i];//枚举第一行的情况for (int op = 0; op < 32; op++){memcpy(backup, g, sizeof(backup));//备份一下一开始的地图int start = 0;for (int i = 0; i < 5; i++){if (op >> i & 1){start++;turn(0, i);}}int ans = dfs(g)+start;if (check()&&res > ans){res = ans;}memcpy(g, backup, sizeof(backup));}if (res <=6&&res!=-1){printf("%d\n", res);}else{printf("-1\n");}}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/193423.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十五届海峡两岸电视主持新秀大会竞赛流程

海峡两岸电视主持新秀会是两岸电视媒体共同举办的一项活动&#xff0c;旨在为两岸年轻的电视主持人提供一个展示才华的舞台&#xff0c;促进两岸文化交流和青年交流。本届新秀会是第十二届海峡两岸电视艺术节的重要活动之一。本次竞赛赛制流程如下&#xff1a; &#xff08;1&…

面向对象中的方法是对实例的属性进行操作的函数吗?

问题描述&#xff1a;”面向对象中的方法是对实例的属性进行操作的函数吗&#xff1f; 问题解决&#xff1a;可以这么理解。需要搞清楚面向对象中类、实例、属性和方法的区别和联系。 在面向对象编程中&#xff0c;类&#xff08;Class&#xff09;、实例&#xff08;Instance…

wxml和html的异同?

WXML和HTML的异同如下&#xff1a; 异同点一&#xff1a;WXML仅能在微信小程序开发工具中预览&#xff0c;而HTML可以在浏览器内预览1。异同点二&#xff1a;WXML对组件进行了重新封装&#xff0c;为后续的性能优化提供了可能&#xff0c;同时避免开发者写出低质量的代码1。异…

springboot助农管理系统

springboot助农管理系统 成品项目已经更新&#xff01;同学们可以打开链接查看&#xff01;需要定做的及时联系我&#xff01;专业团队定做&#xff01;全程包售后&#xff01; 2000套项目视频链接&#xff1a;https://pan.baidu.com/s/1N4L3zMQ9nNm8nvEVfIR2pg?pwdekjv 提…

初探Java之旅:探寻Java的奥秘

✨个人主页&#xff1a;全栈程序猿的CSDN博客 &#x1f4a8;系列专栏&#xff1a;Java从入门到精通 ✌座右铭&#xff1a;编码如诗&#xff0c;Bug似流星&#xff0c;持续追求优雅的代码&#xff0c;解决问题如同星辰般自如 在计算机编程的世界中&#xff0c;有一门被誉为“千变…

分享87个节日PPT,总有一款适合您

分享87个节日PPT&#xff0c;总有一款适合您 87个节日PPT下载链接&#xff1a;https://pan.baidu.com/s/1eUxA59uQ-hZWWpFzzDuCkQ?pwd6666 提取码&#xff1a;6666 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不易…

affinity好用还是ps好用?2024年最新功能解析

多年来&#xff0c;ps已经有了大量竞争对手。然而每次Photoshop都足以保持其领先地位。开源GIMP和Pixelmator都试图取代Photoshop&#xff0c;不过Photoshop对此不屑一顾。英国Serif公司研发了一款名为Affinity Photo的软件&#xff0c;声称可以叫板ps。今天我们看看有最有可能…

【CPU 架构】x86、x86_64、x64、arm64、aarch64

x86、x86_64、x64、arm64、aarch64 1.服务器分类2.CPU 架构2.1 x86 架构&#xff1a;x86、x86_64、x642.2 arm 架构&#xff1a;arm64 和 aarch64 3.发展历史 1.服务器分类 按照 CPU 体系架构来区分&#xff0c;服务器主要分为两类&#xff1a; 非 x86 服务器&#xff1a;使用…

linux下安装nginx

第一步&#xff1a;压缩包 准备压缩包&#xff0c;最好准备一个稳定的版本&#xff1a;下载地址 我这边选用的是1.24.0双版本号 第二步&#xff1a;解压 在相对应的目录下&#xff0c;执行命令&#xff1a;tar -zxvf nginx-1.18.0.tar.gz 第三步&#xff1a;配置\编译 推荐…

解决 Python中错误 TypeError: Not All Arguments Converted During String Formatting

Python 中的字符串格式化可以通过多种方式完成,模 (%) 运算符就是其中一种方法。 它是 Python 中最古老的字符串格式化方法之一,以错误的方式使用它可能会导致 TypeError: not all arguments converted during string formatting chewy。 不仅如此,许多其他原因也可能导致同…

详解—[C++ 数据结构]—AVL树

目录 一.AVL树的概念 二、AVL树节点的定义 三、AVL树的插入 3.1插入方法 四、AVL树的旋转 1. 新节点插入较高左子树的左侧---左左&#xff1a;右单旋 2. 新节点插入较高右子树的右侧---右右&#xff1a;左单旋 3.新节点插入较高左子树的右侧---左右&#xff1a;先左单旋…

07、基于LunarLander登陆器的强化学习案例(含PYTHON工程)

07、基于LunarLander登陆器的强化学习&#xff08;含PYTHON工程&#xff09; 开始学习机器学习啦&#xff0c;已经把吴恩达的课全部刷完了&#xff0c;现在开始熟悉一下复现代码。全部工程可从最上方链接下载。 基于TENSORFLOW2.10 0、实践背景 gym的LunarLander是一个用于…

第十五届蓝桥杯模拟赛(第二期)

大家好&#xff0c;我是晴天学长&#xff0c;本次分享&#xff0c;制作不易&#xff0c;本次题解只用于学习用途&#xff0c;如果有考试需要的小伙伴请考完试再来看题解进行学习&#xff0c;需要的小伙伴可以点赞关注评论一波哦&#xff01;后续会继续更新第三期的。&#x1f4…

解决uview中uni-popup弹出层不能设置高度问题

开发场景&#xff1a;点击条件筛选按钮&#xff0c;在弹出的popup框中让用户选择条件进行筛选 但是在iphone12/13pro展示是正常&#xff0c;但是切换至其他手机型号就填充满了整个屏幕&#xff0c;需要给这个弹窗设置一个固定的高度 iphone12/13pro与其他型号手机对比 一开始…

Golang 模块版本管理与语义版本控制详解

目录 语义版本控制&#xff08;SemVer&#xff09; Go 模块版本 模块版本的选择和升级 go.mod 文件 版本管理最佳实践 小结 在 Golang 中&#xff0c;模块&#xff08;module&#xff09;是 Go 1.11 版本引入的依赖管理系统&#xff0c;帮助开发者管理项目的依赖。在 Go …

Python学习路线 - Python语言基础入门 - 学习汇总

Python学习路线 - Python语言基础入门 - 学习汇总 目录准备工作基础语法判断语句功能快捷键功能快捷键功能快捷键功能快捷键功能快捷键功能快捷键功能快捷键功能快捷键 目录 准备工作 基础语法 判断语句 功能快捷键 功能快捷键 功能快捷键 功能快捷键 功能快捷键 功能…

微信小程序:button微信开放能力打开客服会话

文档 https://developers.weixin.qq.com/miniprogram/dev/component/button.html 按钮关键属性 open-type"contact"功能按钮 <button class"button__open-type"open-type"contact"> </button>css样式 父元素需要设置为相对定位…

Linux环境下 make/makefile、文件时间属性 详解!!!

1.项目自动化构建工具make/makefile 1.为什么要有make/makefile 我们先写一个简单的代码&#xff0c;然后编译生成一个可执行程序&#xff0c;下面的内容我们需要知道gcc识和编译链接的一些知识&#xff0c;不清楚的朋友们可以点这里http://t.csdnimg.cn/0QvL8 我们知道要想生…

Java 数据结构篇-用链表、数组实现队列(数组实现:循环队列)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 队列的说明 1.1 队列的几种常用操作 2.0 使用链表实现队列说明 2.1 链表实现队列 2.2 链表实现队列 - 入栈操作 2.3 链表实现队列 - 出栈操作 2.4 链表实现队列 …

9-1定义一个结构体计算该日是本年中的第几天。

#include<stdio.h> struct {int year;int month;int day; }date; int main(){int days;printf("输入年月日&#xff1a;\n");scanf("%d,%d,%d",&date.year,&date.month,&date.day);switch(date.month){case 1:daysdate.day; break;case…