95. 费解的开关

2023-11-11 11:36
文章标签 开关 95 费解

本文主要是介绍95. 费解的开关,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

思路

  1. 因为最优解是每个灯只操作一次
  2. 所以顺序无所谓
  3. 只要确定了第一行后,下面都可以确定
  4. 当前灯不亮就操作它下面的格子即可点亮它
  5. 我觉得这种方法是唯一不会互相干扰的方法
  6. 还是不太理解…

代码

#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
const int N = 10;char g[N][N];
int xx[5] = {0, 1, 0, -1, 0};
int yy[5] = {1, 0, -1, 0, 0};void turn (int x, int y)
{for (int i = 0; i < 5; i ++ ){int dx = x + xx[i];int dy = y + yy[i];if (dx < 0 || dx > 4 || dy < 0 || dy > 4) continue;g[dx][dy] ^= 1;}
}int main()
{int T; cin >> T;while (T -- ){for (int i = 0; i < 5; i ++ ) cin >> g[i];int ans = 0x3f3f3f3f;char backup[N][N];memcpy(backup, g, sizeof g);
//		只有每个灯按一遍才是最优解
//		确定第一行的各种按法为初始状态,剩下的都是为了点亮而点亮for (int op = 0; op < 31; op ++ ){int num = 0;memcpy(g, backup, sizeof backup);for (int i = 0; i < 5; i ++ ){if (op >> i & 1){turn (0, i);num ++;}}for (int i = 0; i < 4; i ++ ){for (int j = 0; j < 5; j ++ ){if (g[i][j] == '0'){turn(i + 1, j);num ++;}}}int f = 0;for (int i = 0; i < 5; i ++ ){if (g[4][i] == '0'){f = 1;break;}}if (!f){ans = min (ans, num);}}if (ans > 6) cout << -1 << endl;else cout << ans << endl;}return 0;
}

这篇关于95. 费解的开关的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/389768

相关文章

Android Switch开关

Switch相关XML 属性 android:checked="true"android:thumb="@drawable/alert_dialog_icon" //开关android:track="@drawable/img1" //开关滑动轨道android:textStyle="bold"android:typeface="monospace"android:switchM

Android ToggleButton 开关按钮

ToggleButton相关属性,方法android:textOn="On"android:textOff="Off"android:checked="true"setChecked(boolean) package shortcut.song.com.myapplication;import android.support.v7.app.AppCompatActivity;impo

ISA-88与ISA-95标准简要介绍

ISA-88与ISA-95标准简要介绍 1. ISA-88标准 ISA-88是一个在制造过程自动化中广泛使用的国际标准,它主要定义和规范了制造和加工自动化应用中的工作流程模型和术语。该标准被划分为四个主要部分(Part 1至Part 4),每一部分都涵盖了不同方面的自动化生产需求。 Part 1 (ISA-88.01): 工作流程模型和术语 Part 1是ISA-88标准的基础,它定义

100盏灯开关问题

问题描述: 有100盏灯泡,第一轮点亮所有电灯,第二轮每两盏灯熄灭一盏,即熄灭第2盏,第4盏,以此类推,第三轮改变编号为3的倍数的电灯,第3盏,第6盏,如果原来那盏灯是亮的,就熄灭它,如果原来是灭的,就点亮它,以此类推,直到第100轮。问第100结束后,还有多少盏灯泡是亮的? 解答: 分析可知如果最后某一盏灯是亮着的,那么它一定是被切换了奇数次(第0次的时候全部都关着)。

Android 之 电灯泡开关效果

<?xml version="1.0" encoding="utf-8"?>   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      android:orientation="vertical"      android:layout_width="fill_parent

OpenCV利用滑动条实现一个开关

//-----------------------------------------------------------------------// 代码说明:以下代码来自Learning OpenCV官方源码// 注:改代码并没有添加图片,仅是实现了开关的窗口实现,// switch_off_function与switch_on_function方便外部看开关功能的

自定义控件 - swicth开关,仿ios的UISwitch

转载请标明出处: http://blog.csdn.net/u013254166/article/details/79161247 本文出自: 【rhino博客】  直接上效果图,实现很简单,这里就不赘述了。 最后附上源码下载链接,点击下载。

开关二极管损坏如何判断

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言1. 外观检查2. 测量正向压降3. 反向电阻测量4. 电路功能测试5. 高压测试6. 加热测试 前言 送给大学毕业后找不到奋斗方向的你(每周不定时更新) 中国计算机技

音频检测电路 | 声音传感器模块 | 口哨开关 | Arduino

音频检测电路 | 声音传感器模块 | 口哨开关 | Arduino 案例分析电路设计1. **基本音频检测电路设计**电路结构:2. **灵敏度调节原理**方法:3. **非 MCU 控制的 LED 触发**设计步骤:4. **电路示例**5. **示意图(文本描述)**总结 实验方法 案例分析 一个硅胶娃娃,挤压或拍打会亮灯; 这个硅胶玩偶的工作原理可能是基于以下几个