费解的开关笔记

简介: 费解的开关笔记

// 卡壳,括号处理出问题了,这里的括号把下面的部分全包住了;打代码慢一点,稳住细节,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;
    }
}
目录
相关文章
|
网络协议 IDE 开发工具
基于ESP8266远程舵机的控制与实现
基于ESP8266远程舵机的控制与实现
2004 0
基于ESP8266远程舵机的控制与实现
|
9月前
|
数据可视化 Linux 应用服务中间件
Centos7.9安装phpldapadmin
Centos7.9安装phpldapadmin
264 15
|
网络虚拟化
无线基础知识:直接转发和隧道转发有何区别?
无线基础知识:直接转发和隧道转发有何区别?
965 4
|
机器学习/深度学习 存储 自然语言处理
【机器学习】LoRA:大语言模型中低秩自适应分析
【机器学习】LoRA:大语言模型中低秩自适应分析
592 5
matplotlib.pyplot contourf()函数的使用
matplotlib.pyplot contourf()函数的使用
524 3
|
大数据 程序员
为什么要学正则表达式 - 1
为什么要学正则表达式 - 1
100 1
多媒体标签让你的网页,内容很丰富!
多媒体标签让你的网页,内容很丰富!
|
存储 SQL Cloud Native
数据库技术深探:原理、应用与未来趋势
一、引言 在数字化浪潮中,数据库技术作为数据存储、检索和管理的基石,对现代信息系统起着至关重要的作用
|
算法 决策智能
运筹优化学习08:Repairing MIP infeasibility through local branching
运筹优化学习08:Repairing MIP infeasibility through local branching
运筹优化学习08:Repairing MIP infeasibility through local branching