费解的开关笔记

简介: 费解的开关笔记

// 卡壳,括号处理出问题了,这里的括号把下面的部分全包住了;打代码慢一点,稳住细节,debug的时候也要检查一下括号问题(毕竟比较容易检查,可以优先检查)

// 根据操作判断是开关问题,然后影响上下左右中的开关操作的做法是枚举最开始的一行的操作,然后递推,最后验证
//  还要看输入与范围,输入没有空格,要用char,范围500,非常安全可以dp,floyd,n^3,dfs剪枝
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstring>
using namespace std;
const int N = 6;
char f[N][N],backup[N][N];
int dx[] = {0,0,0,1,-1},dy[] = {0,1,-1,0,0};
void turn(int x,int y){
    for(int i = 0;i < 5;i++){
        int a = dx[i] + x;
        int b = dy[i] + y;
        if(a < 0 || a > 4 || b < 0 ||  b > 4) continue;
        f[a][b] ^= 1;
    }
}
int main(){
    int t;
    cin >> t;
    while(t--){
        for(int i = 0;i < 5;i++){
            for(int j = 0;j < 5;j++){
                cin >> f[i][j];
            }
        }
        memcpy(backup,f,sizeof f);
        int res = 0x3f3f3f3f;
        for(int op = 0;op < 1 << 5;op++){
            int step = 0;
            for(int i = 0;i < 5;i++){
                // 卡壳,括号处理出问题了,这里的括号把下面的部分全包住了;
                if(op >> i & 1){
                    turn(0,i);
                    step++;
                }
            }
                for(int i = 0;i < 4;i++){
                    for(int j = 0;j < 5;j++){
                        if(f[i][j] == '0'){
                            turn(i+1,j);
                            step++;
                        }
                    }
                }
                bool dark = false;
                for(int i = 0;i < 5;i++){
                    if(f[4][i] == '0') dark = true;
                }
                if(!dark) res = min(step,res);
                memcpy(f,backup,sizeof f);
        }
        if(res > 6) res = -1;
        cout << res << endl;
    }
}
目录
相关文章
|
5天前
|
数据可视化 测试技术 C++
【软件设计师备考 专题 】设计输入输出:屏幕界面设计和检查方法(二)
【软件设计师备考 专题 】设计输入输出:屏幕界面设计和检查方法
26 0
|
5天前
|
前端开发
前端知识笔记(十三)———单全选框控制方法,炒鸡无敌方便!!!
前端知识笔记(十三)———单全选框控制方法,炒鸡无敌方便!!!
16 0
|
10月前
|
API 数据处理
2022年十月份电赛OpenMV巡线方案(2)---主控代码详细分析
2022年十月份电赛OpenMV巡线方案(2)---主控代码详细分析
101 0
|
Python
上古代码漫游记(二):把陷阱去掉了,反倒踩进了新的陷阱?
上古代码漫游记(二):把陷阱去掉了,反倒踩进了新的陷阱?
82 0
蓝桥杯之多界面切换处理(枚举加状态机法)
蓝桥杯之多界面切换处理(枚举加状态机法)
95 0
|
存储 运维 监控
一个开关就让服务网格变快 —— 概述篇
作为业内首个全托管Istio兼容的阿里云服务网格产品ASM,一开始从架构上就保持了与社区、业界趋势的一致性,控制平面的组件托管在阿里云侧,与数据面侧的用户集群独立。ASM产品是基于社区Istio定制实现的,在托管的控制面侧提供了用于支撑精细化的流量管理和安全管理的组件能力。通过托管模式,解耦了Istio组件与所管理的K8s集群的生命周期管理,使得架构更加灵活,提升了系统的可伸缩性。从2022年4月
一个开关就让服务网格变快 —— 概述篇
|
C语言
复习单片机:单灯闪烁(内含设计思路和原始代码)
复习单片机:单灯闪烁(内含设计思路和原始代码)
178 0
复习单片机:单灯闪烁(内含设计思路和原始代码)
|
芯片
复习单片机:独立按键(内含.1 按键介绍+.2 硬件设计+.3 软件设计+4.原始代码+.5 实验现象)
复习单片机:独立按键(内含.1 按键介绍+.2 硬件设计+.3 软件设计+4.原始代码+.5 实验现象)
455 0
复习单片机:独立按键(内含.1 按键介绍+.2 硬件设计+.3 软件设计+4.原始代码+.5 实验现象)
费解的开关
费解的开关题解
106 0
|
数据安全/隐私保护 C语言 计算机视觉
C语言第四章 分支结构程序设计习题1【初始版手机编辑,电脑修改数据丢失。看水印】
C语言第四章 分支结构程序设计习题1【初始版手机编辑,电脑修改数据丢失。看水印】
79 0
C语言第四章 分支结构程序设计习题1【初始版手机编辑,电脑修改数据丢失。看水印】