关键词:
例如
0 1 1
1 0 0
1 0 1
点一下最中间的灯【2,2】就变成了
0 0 1
0 1 1
1 1 1
再点一下左上角的灯【1,1】就变成了
1 1 1
1 1 1
1 1 1
达成目标。最少需要2步。
输出2即可。
输入输出格式
输入格式:
九个数字,3*3的格式输入,每两个数字中间只有一个空格,表示灯初始的开关状态。(0表示关,1表示开)
输出格式:
1个整数,表示最少打开所有灯所需要的步数。
输入输出样例
0 1 1 1 0 0 1 0 1
2
1 #include<bits/stdc++.h> 2 using namespace std; 3 int a[3] [3]; 4 int b[3][3]; 5 int ans=999999; 6 int main() 7 for(int i=0;i<3;i++) 8 for(int j=0;j<3;j++) 9 cin>>a[i][j]; 10 11 12 for(int x=0;x<(1<<9);x++)//枚举所有情况 13 int cnt=0; 14 memset(b,0,sizeof(b)); 15 for(int i=0;i<9;i++) 16 if((x>>i)&1==1)//枚举所有可以改变的地方 17 cnt++; 18 int p=i%3,q=i/3; 19 b[p][q]^=1; 20 if(p!=0)b[p-1][q]^=1; 21 if(p!=2)b[p+1][q]^=1; 22 if(q!=0)b[p][q-1]^=1; 23 if(q!=2)b[p][q+1]^=1; 24 25 26 bool ok=true; 27 for(int i=0;i<3;i++)//比对改变之后是否可行 28 for(int j=0;j<3;j++) 29 if((a[i][j]^b[i][j])==0) 30 ok=false; 31 32 33 34 if(ok==true) 35 ans=min(ans,cnt); 36 37 38 cout<<ans; 39
洛谷p2040打开所有的灯
P2040打开所有的灯题目背景pmshz在玩一个益(ruo)智(zhi)的小游戏,目的是打开九盏灯所有的灯,这样的游戏难倒了pmshz。。。题目描述这个灯很奇(fan)怪(ren),点一下就会将这个灯和其周围四盏灯的开关状态全部改变。现在你的任务... 查看详情
luogu2040|打开所有的灯(广搜+状压)(代码片段)
题目背景pmshz在玩一个益(ruo)智(zhi)的小游戏,目的是打开九盏灯所有的灯,这样的游戏难倒了pmshz。。。题目描述这个灯很奇(fan)怪(ren),点一下就会将这个灯和其周围四盏灯的开关状态全部改变。现在你的任务就是就是告诉pmshz... 查看详情
开灯问题(代码片段)
有n盏灯,编号为1~n。第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后... 查看详情
nyoj77-开灯问题(倍数遍历)(代码片段)
...:24难度:1题目描述:有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。一共... 查看详情
codeforcesglobalround14e.phoenixandcomputers(组合数,dp)(代码片段)
...=电脑考虑最后的点灯状态,大概是一段连续的灯被手动打开,一个被动打开,一段连续的灯被打开…再单独考虑打开一段连续长kkk的灯是怎么做到的由于不能使任何一盏灯被动打开,唯一的策略是先打开其中的任意一盏灯,之后每... 查看详情
codeforces985b题解(代码片段)
...都是关闭的.按下某开关后,所有与这个开关连接的灯将会打开,已经打开的不会关闭.现在你需要去掉一个开关,使得按下剩余$n-1$个开关后,所有灯都可以打开.若存在方案,则输出YES,否则输出NO.题解直观的想法为,枚举去掉的开关$i$,... 查看详情
python编程训练题2(代码片段)
...ff0c;编号1~n(0<n<100)。第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被... 查看详情
p3870[tjoi2009]开关(代码片段)
...号在这个区间内的灯的状态(把开着的灯关上,关着的灯打开),第二种操作是指定一个区间[a,b],要求你输出这个区间内有多少盏灯是打开的。灯在初始时都是关着的。输入输出格式输入格 查看详情
开灯问题(代码片段)
问题描述:有n盏灯,编号为1~n。第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关,依此类推,一共k个人,问最后有哪些灯开着? 输入n,k,输出... 查看详情
一本通1109开关灯(代码片段)
...(1号)将灯全部关闭,第二个人(2号)将编号为2的倍数的灯打开,第三个人(3号)将编号为3的倍数的灯做相反处理(即将打开的灯关闭,将关闭的灯打开)。依照编号递增顺序,以后的人都和3号一样,将凡是自己编号倍数的灯做相反... 查看详情
开灯问题-----00004
描述有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。一共有k... 查看详情
开灯和蛇形
...。开灯问题,有n盏灯,编号为1-n,第一个人把所有的灯都打开,第二个人按下所有编号为2的倍数的开关(这些灯将被关掉),第三个人按下所有编号为3倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),以此类推,一... 查看详情
开灯问题
有n盏灯,编号为1~n,第一个人把所有灯打开,第二个人按下所有编号为2的倍数开关(这些灯将被关掉),第三个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),一次类推,一共有k个人,问最后哪些... 查看详情
前端面试题.......(代码片段)
...简单也最容易想到,可是效率有点低。 letcount=//所有的灯getData:function()letarr=[];for(leti=1;i<=100;i++)arr.push(false);returnarr;,//每个人都去操作自己能够操作的灯泡changeData:function()letarr=this. 查看详情
开灯问题
...nbsp;开灯问题,有n盏灯,编号为1~n。第一个人把所有灯都打开,第二个人按下所有编号为2的倍数的开关(这些灯将被关掉),第三个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),以此类推。... 查看详情
179竞赛
...都是关着的。在k 时刻(k的取值范围是0到n-1),我们打开light[k]这个灯。灯的颜色要想变成蓝色就必须同时满足下面两个条件:灯处于打开状态。排在它之前(左侧)的所有灯也都处于打开状态。请返回能够让所有开着的灯... 查看详情
p1610鸿山洞的灯(代码片段)
?Aimee?很简单的小dfs额其实是套着dfs壳的贪心#include<iostream>#include<cstdio>#include<algorithm>usingnamespacestd;intn,dis;intpl[100001];intans;voiddfs(intnow,intla) if(now==1) dfs(now+1,now); 查看详情
jzoj1321灯(代码片段)
...中玩游戏。但是天不从人愿,突然,牛棚的电源跳闸了,所有的灯都被关闭了。贝希是一个很胆小的女生,在伸手不见拇指的无尽的黑暗中,她感到惊恐,痛苦与绝望。她希望您能够帮帮她,把所有的灯都给重新开起来!她才能... 查看详情