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

相关推荐

暮雨轻歌:看起来hr不能接受我菜查看图片
点赞 评论 收藏
分享
生命诚可贵:先不说内容怎么样 排版就已经太差劲了 第一眼看不到重点,第二眼已经没有再看的耐心了, 篇幅占的太满了 字体不要用灰色 观感不好 想重点突出的黑色加粗就可以了 多列要点 少些大段的句子 项目经历把项目用的技术要点列出来,光写个python plc什么的太宽泛了 自我评价也有点偏多
点赞 评论 收藏
分享
牛客网
牛客企业服务