二进制枚举即可,需要注意的是,这道题和费解的开关还是有不同点的。
费解的开关枚举第一行就行了,因为它有依赖关系的。
而这个是一个十字形,无那种关系。故直接暴力枚举邓按不按的所有情况即可。

#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> PII;
string a[10],b[15];
char get(char c)
{if(c=='-') return '+';if(c=='+') return '-';
}
void solve(int x,int y)
{for(int i=0;i<4;i++) b[x][i]=get(b[x][i]),b[i][y]=get(b[i][y]);b[x][y]=get(b[x][y]);
}
int main(void)
{for(int i=0;i<4;i++) cin>>a[i];vector<PII>ans;for(int i=0;i<(1<<16);i++){vector<PII>ve;for(int j=0;j<4;j++) b[j]=a[j];for(int j=0;j<16;j++){if( (i>>j) & 1 ){solve(j/4,j%4);ve.push_back({j/4,j%4});}}bool flag=1;for(int j=0;j<4;j++)for(int k=0;k<4;k++)if(b[j][k]=='+') flag=0;if(flag&&(ans.size()>ve.size()||ans.empty())) ans=ve;}cout<<ans.size()<<endl;for(int i=0;i<ans.size();i++) cout<<ans[i].first+1<<" "<<ans[i].second+1<<'\n';return 0;
}

116. 飞行员兄弟【二进制枚举】相关推荐

  1. AcWing 116. 飞行员兄弟(二维指数型枚举)

    116. 飞行员兄弟 思路: 通过二进制串暴力枚举所有操作情况 从左上到右下扫描二进制串 (当一个答案存在多种操作情况时保证优先级整体从上到下,同行从左到右打开) 把每次的操作坐标存放到ArrayLi ...

  2. 116. 飞行员兄弟 Java题解

    注意:如果存在多种打开冰箱的方式,则按照优先级整体从上到下,同行从左到右打开. 数据范围 1≤i,j≤4 输入样例: -+-- ---- ---- -+-- 输出样例: 6 1 1 1 3 1 4 4 ...

  3. HDU 5025Saving Tang Monk BFS + 二进制枚举状态

    3A的题目,第一次TLE,是因为一次BFS起点到终点状态太多爆掉了时间. 第二次WA,是因为没有枚举蛇的状态. 解体思路: 因为蛇的数目是小于5只的,那就首先枚举是否杀死每只蛇即可. 然后多次BFS, ...

  4. 飞行员兄弟 Java版

    "飞行员兄弟"这个游戏,需要玩家顺利的打开一个拥有16个把手的冰箱. 已知每个把手可以处于以下两种状态之一:打开或关闭.只有当所有把手都打开时,冰箱才会打开.把手可以表示为一个4х ...

  5. 飞行员兄弟 JAVA题解

    "飞行员兄弟"这个游戏,需要玩家顺利的打开一个拥有16个把手的冰箱. 已知每个把手可以处于以下两种状态之一:打开或关闭. 只有当所有把手都打开时,冰箱才会打开. 把手可以表示为一个 ...

  6. Java实现十字形开关问题(“飞行员兄弟“)

    主要通过位运算 "飞行员兄弟"这个游戏,需要玩家顺利的打开一个拥有 16 个把手的冰箱. 已知每个把手可以处于以下两种状态之一:打开或关闭. 只有当所有把手都打开时,冰箱才会打开. ...

  7. Acwing---116.飞行员兄弟

    飞行员兄弟 1.题目 2.基本思想 3.代码实现 1.题目 "飞行员兄弟"这个游戏,需要玩家顺利的打开一个拥有 16 个把手的冰箱. 已知每个把手可以处于以下两种状态之一:打开或关 ...

  8. HPU组队赛B:问题(二进制枚举)

    时间限制1 Second 内存限制 512 Mb 题目描述 你有n个问题,你已经估计了第i个问题的难度为Ci,现在你想使用这些问题去构造一个问题集.比赛的问题集必须包含至少两个问题,而且比赛的总难度必 ...

  9. BZOJ1688|二进制枚举子集| 状态压缩DP

    Disease Manangement 疾病管理 Description Alas! A set of D (1 <= D <= 15) diseases (numbered 1..D) ...

最新文章

  1. CUDA学习(六十五)
  2. Maven多模块打包遇到的问题详解
  3. 现在公司都不缺人了吗?软件测试工作经历3年居然被坑了?防不胜防
  4. MUI框架开发HTML5手机APP(一)--搭建第一个手机APP
  5. 清华大学MBA在职班第一学年第二学期课表
  6. 7.1 封装(Java包(package)的概念+访问权限修饰符(public/private/protected/default))
  7. django使用mysql函数_请问django 可以操作mysql函数么?
  8. Qt学习笔记(十九):QTreeWidget 的常用方法
  9. 论文篇-----基于机器学习的交通流预测技术的研究与应用
  10. QT 快捷键 识别小写字母
  11. vue仿追书神器,vue小说项目源码
  12. LayaBox---背景拖动
  13. LVS-NAT基于NFS存储部署Discuz
  14. 让你永远忘不了的傅里叶变换解析
  15. 初等数论【整除性篇】之习题证明
  16. 面试官,怎样实现 Router 框架?
  17. 一款好用的视频转换gif的小软件——抠抠视频秀
  18. 成功解决raise ValueError(“Unknown label type: %s“ % repr(ys))ValueError: Unknown label type: (array([24
  19. html5 a标签,img标签,em和i标签,strong和b标签,q标签
  20. 交插二五条码(交叉25码)详解

热门文章

  1. numpy中where函数的用法
  2. flutter 主题切换
  3. select 实现server I/O多路复用通信
  4. EveryNote使用说明,好用的文件备注搜索工具
  5. 图片懒加载原理-实例二
  6. 在win8.1 64位系统+cocos2d-x2.2.3下搭建android交叉编译环境
  7. 定点c程序之一:定标
  8. 波卡链Substrate (7)Babe协议四“出块签名和验证”
  9. Html 教程 (9)列表
  10. 比特币钱包(4) BIP39 助记词