关注
dfs
```c++
#include <iostream>
using namespace std;
const int N = 20;
int q[N];
int n;
bool judge() {
for(int i = 0; i < n; i++) {
if(q[i] != 1) return false;
}
return true;
}
bool st;
int cnt, res = 1e6;
void dfs(int u) {
//u表示当前正在操作的u个灯泡,有两种情况,按下或者不按
//首先判断是否已经全为1了。
if(judge()) {
st = true;
res = min(res, cnt);
return;
}
if(u == n) {
//按完了灯泡,返回
return;
}
//不按第u个灯泡
dfs(u + 1);
//按下第u个灯泡
q[u] = !q[u];
q[(u + 1) % n] = !q[(u + 1) % n];
q[(u - 1 + n) % n] = !q[(u - 1 + n) % n];
cnt++;
dfs(u + 1);
//恢复现场
q[u] = !q[u];
q[(u + 1) % n] = !q[(u + 1) % n];
q[(u - 1 + n) % n] = !q[(u - 1 + n) % n];
cnt--;
}
int main() {
cin >> n;
for(int i = 0; i < n; i++) cin >> q[i];
dfs(0);
if(!st) res = -1;
cout << res;
return 0;
}
```
查看原帖
点赞 1
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
02-25 11:19
武夷学院 机械工程师 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 打工人的精神状态 #
22120次浏览 345人参与
# 两会劳动法放大招 #
5773次浏览 178人参与
# 腾讯音乐26届实习 #
105025次浏览 648人参与
# 牛友故事会 #
136568次浏览 2286人参与
# 你小时候最想从事什么职业 #
72950次浏览 1369人参与
# 技术岗笔试题求解 #
11679次浏览 110人参与
# 元戎现在香不香 #
61453次浏览 478人参与
# 新凯来求职进展汇总 #
11531次浏览 61人参与
# 携程求职进展汇总 #
172166次浏览 1136人参与
# 实习/项目/竞赛奖项,哪个对找工作更重要? #
43248次浏览 581人参与
# 签了三方后想毁约怎么办 #
25230次浏览 144人参与
# 2023毕业生求职有问必答 #
147903次浏览 1457人参与
# 东风汽车求职进展汇总 #
11834次浏览 73人参与
# 韶音科技求职进展汇总 #
44223次浏览 465人参与
# 正在春招的你,也参与了去年秋招吗? #
233416次浏览 2238人参与
# 你投递的公司有几家约面了? #
48377次浏览 298人参与
# 许愿池 #
249348次浏览 2672人参与
# 听到哪句话就代表面试稳了or挂了? #
113218次浏览 1022人参与
# 生物制药人求职现状 #
12568次浏览 110人参与
# 秋招想进国企该如何准备 #
43621次浏览 338人参与
# 牛客租房专区 #
43790次浏览 696人参与
# 网易求职进展汇总 #
68987次浏览 533人参与