当前位置:网站首页>The second session of the question swiping and punching activity -- solving the switching problem with recursion as the background (I)
The second session of the question swiping and punching activity -- solving the switching problem with recursion as the background (I)
2022-07-04 07:54:00 【Poplar branch】
AcWing 95. Inexplicable switch day03 【C++】
Title Description

source :acwing
Original title transmission gate
Problem solving report
One 、 Understanding of topic meaning
Players change the state of a light and have a chain reaction : And this lamp up and down adjacent to the left and right lights should also change their state accordingly .
Use windows Own drawing , Hold on shift Drag the mouse to draw the following graphics for demonstration .
Sample demonstration :
Two 、 The operation of each line of switch is completely determined by the light on and off of the previous line
- Suppose all the states in the first row are determined by enumeration , Each switch is either pressed , Or don't press , Here it is 2 5 2^5 25 Secondary selection .
- According to the light off state of the previous line , Decide how to press the next line , To ensure that the previous line is bright .

3、 ... and 、 The details are finalized
- How to enumerate the first line 32 In the operation . A five bit binary can just represent this 32 Kind of operation . such as
11010 => Corresponding to the first 26 Operations . that 0 ~ 2 5 2^5 25-1 You can enumerate the first row one by one 32 Kind of plan
Switch on function
After clicking the switch in one position , Its four position switches will be changed . Use four i f if if It seems too troublesome . What is considered here is to add Offset implementation .
Time complexity
32 ∗ 25 ∗ 5 ∗ 500 = 2000000 32 * 25 * 5 * 500 = 2000000 32∗25∗5∗500=2000000, About twomillion calculations . There is no problem at all
Reference code
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 6;
char g[N][N],backup[N][N];
int dx[] = {-1,0,1,0,0} , dy[] = {0,-1,0,1,0};
// completion turn function
void turn(int x,int y)
{
for(int i = 0; i < 5;i++)
{
int a = x+dx[i] , b = y + dy[i];
// Judgement boundary
if(a < 0 || a >= 5 || b < 0 || b>= 5) continue;
// Update status
g[a][b] ^= 1;
}
}
int main()
{
int T;
cin >> T;
while(T--)
{
// Building maps
for(int i = 0; i < 5;i++) cin >> g[i];
int res = 10;// Record answer
// Enumerate the first line of 32 A choice
for(int op = 0; op < 32;op++)
{
memcpy(backup,g,sizeof g);
int step = 0;// Record the steps performed
// Deal with whether there is a light that can be pressed on in the current scheme
for(int i = 0; i < 5; i++)
{
if(!(op >> i &1))
{
step ++;
turn(0,i);
}
}
// According to the current situation in the first line , Deal with the processing of the next four lines
for(int i = 0; i < 4;i++)
{
for(int j = 0; j < 5;j++)
if(g[i][j] == '0')
{
step ++;
turn(i+1,j);
}
}
// Traverse the last line , If there is a black lamp , Then the current scheme fails
bool dark = false;// Mark
for(int i = 0; i < 5;i++)
if(g[4][i] == '0')
{
dark = true;
break;
}
if(!dark) res = min(res,step);
memcpy(g,backup,sizeof g);// Get the data back from the backup
}
if(res > 6) res = -1;//res = -1 Represents no solution
cout << res << endl;
}
return 0;
}
边栏推荐
- Heap concept in JVM
- Life planning (flag)
- Set and modify the page address bar icon favicon ico
- Scanf read in data type symbol table
- 弈柯莱生物冲刺科创板:年营收3.3亿 弘晖基金与淡马锡是股东
- [go basics] 2 - go basic sentences
- 墨者学院-PHPMailer远程命令执行漏洞溯源
- How to get bytes containing null terminators from a string- c#
- Go learning notes - constants
- Leetcode (215) -- the kth largest element in the array
猜你喜欢

ZABBIX monitoring system custom monitoring content

JVM -- class loading process and runtime data area

论文学习——基于极值点特征的时间序列相似性查询方法
![[performance test] read JMeter](/img/c9/25a0df681c7ecb4a0a737259c882b3.png)
[performance test] read JMeter

Comparison between applet framework and platform compilation

PCIE知识点-010:PCIE 热插拔资料从哪获取

Moher College phpmailer remote command execution vulnerability tracing

Heap concept in JVM

The idea of implementing charts chart view in all swiftui versions (1.0-4.0) was born
![[network security] what is emergency response? What indicators should you pay attention to in emergency response?](/img/2e/96da79d82ae2c49a3a0ab9909467ac.jpg)
[network security] what is emergency response? What indicators should you pay attention to in emergency response?
随机推荐
墨者学院-PHPMailer远程命令执行漏洞溯源
1. Qt入门
Common components of flask
线性代数1.1
Do you know about autorl in intensive learning? A summary of articles written by more than ten scholars including Oxford University and Google
Const string inside function - C #
【Go基础】2 - Go基本语句
Basic DOS commands
The text box displays the word (prompt text) by default, and the text disappears after clicking.
L1-026 I love gplt (5 points)
I was pressed for the draft, so let's talk about how long links can be as efficient as short links in the development of mobile terminals
L1-027 rental (20 points)
Leetcode 23. Merge K ascending linked lists
Figure guessing game
如何用MOS管来实现电源防反接电路
University stage summary
The frost peel off the purple dragon scale, and the xiariba people will talk about database SQL optimization and the principle of indexing (primary / secondary / clustered / non clustered)
It's healthy to drink medicinal wine like this. Are you drinking it right
Is l1-029 too fat (5 points)
L1-030 one gang one (15 points)