费解的开关(下)

简介: 你玩过“拉灯”游戏吗?

微信截图_20220413200555.png

#include<bits/stdc++.h>
using namespace std;
const int N=5;
char g[N][N],backup[N][N]; 
int dx[5]={-1,0,1,0,0},dy[5]={0,1,0,-1,0};
void turn(int x,int y){
for(int i=0;i<5;i++){
  int a=x+dx[i],b=y+dy[i];
  if(a<0||a>=5||b<0||b>=5)continue;
  g[a][b]^=1;
} 
}
int main(){
int T;  
  cin>>T;
  while(T--){
  for(int i=0;i<5;i++)cin>>g[i];
  int res=10;
  for(int op=0;op<32;op++){
    memcpy(backup,g,sizeof g);
    int step=0;
    for(int i=0;i<5;i++){
      if(op>>i&1){
        step++;
        turn(0,i);
      }
    }
  for(int i=0;i<4;i++){
    for(int j=0;j<5;j++){
      if(g[i][j]=='0'){
        step++;
        turn(i+1,j);
      }
    }
  }
  bool dark=0;
  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);
  } 
  if(res>6)res=-1;
  cout<<res<<endl;
  }
  return 0;
}
目录
打赏
0
0
0
0
7
分享
相关文章
Leetcode|灯泡开关
Leetcode|灯泡开关
116 0
每日算法系列【LeetCode 319】灯泡开关
每日算法系列【LeetCode 319】灯泡开关
169 0
labview布尔型数据开关控制指示灯比较数值颜色变化条件判断
labview布尔型数据开关控制指示灯比较数值颜色变化条件判断
735 0
费解的开关笔记
费解的开关笔记
80 0
枚举时对数组操——三刷AcWing 95. 费解的开关
枚举时对数组操——三刷AcWing 95. 费解的开关
78 0
费解的开关
费解的开关题解
152 0
程序自定义启动图案
很多程序员都会给项目加上专属的启动图标,给人眼前一亮的感觉。那么我们如何给自己的项目也加上这么炫酷的图标呢?一块来学学吧。
328 0
程序自定义启动图案