POJ1753(位操作和枚举)
题目:http://poj.org/problem?id=1753
题意:一块4*4的棋盘,黑白块不规律分布,翻动一个色块,其上下左右,都会被翻动,知道全黑全白为止。输出最小次数,达不到则输出“Impossible"
理解:每块棋盘只有两种表示 黑白 只有16个色块 可以用16位的二进制表示
1 1 1 1 1 2 3 4
1 1 1 1 转化为 5 6 7 8
1 1 1 1 9 10 11 12
1 1 1 1 13 14 15 16
位运算:异或(^)可以实现翻转 1^1=0 0^1=1
a. 1 1
1 1 1
1 1 1 1 表示为1100 1000 0000 0000 51200
1 1 1 1
b.
1 1 1 1
1 1 1 1
1 1 1 1 表示为1110 0100 0000 0000 58368
1 1 1 1
etc......
#include<iostream>
const int MAX=999999;
using namespace std;
int arr[16]= {19,39,78,140,305,626,1252,2248,4880,8992,20032,35968,12544,29184,58368,51200};//只有一位是1,其余是零
int num[16]= {1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768};//对照操作的数
int main()
{
int i,j,value=0;
int cmin=MAX;
char c;
for( i=0; i<16; i++)
{
cin>>c;
if(c=='b')
value+=num[i];//使黑色的位置 对应 为1
else continue;
}
for( i=0; i<65536; i++)//2^16 个数 i代表了每种翻牌方案
{
int cnt=0;
int cvalue=value;
for(j=0; j<16; j++)//j 分别实现每个色块的翻牌操作
if(i&num[j])// 比如 0110 与 0010 则决定第二个色块的翻牌 0110 与0100 则决定第三个色块的翻牌
{
cnt++;
cvalue^=arr[j];//异或 实行翻牌
}
if(cvalue==0||cvalue==65535)
{
if(cnt<cmin)cmin=cnt;
} }
if(cmin==MAX) cout<<"Impossible";
else cout<<cmin<<endl;
return 0;
}
POJ1753(位操作和枚举)的更多相关文章
- C#位操作与枚举的应用
看到代码里有用位操作来判断条件的,以前没有这么用过,做个笔记: int add = 2; int modify = 4; int delete = 8; Console.WriteLine((add ...
- poj-3279 poj-1753(二进制枚举)
题目链接:http://poj.org/problem?id=3279 题目大意: 有一个m*n的棋盘(1 ≤ M ≤ 15; 1 ≤ N ≤ 15),每个格子有两面分别是0或1,每次可以对一个格子做 ...
- poj练习题的方法
poj1010--邮票问题 DFSpoj1011--Sticks dfs + 剪枝poj1020--拼蛋糕poj1054--The Troublesome Frogpoj1062--昂贵的聘礼poj1 ...
- POJ-1753 Flip Game---二进制枚举子集
题目链接: https://vjudge.net/problem/POJ-1753 题目大意: 有4*4的正方形,每个格子要么是黑色,要么是白色,当把一个格子的颜色改变(黑->白或者白-> ...
- POJ1753 Flip Game(bfs、枚举)
链接:http://poj.org/problem?id=1753 Flip Game Description Flip game is played on a rectangular 4x4 fie ...
- poj1753枚举
Flip Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 33670 Accepted: 14713 Descr ...
- [POJ1753]Flip Game(异或方程组,高斯消元,枚举自由变量)
题目链接:http://poj.org/problem?id=1753 题意:同上. 这回翻来翻去要考虑自由变元了,假设返回了自由变元数量,则需要枚举自由变元. /* ━━━━━┒ギリギリ♂ eye! ...
- poj1753解题报告(枚举、组合数)
POJ 1753,题目链接http://poj.org/problem?id=1753 题意: 有4*4的正方形,每个格子要么是黑色,要么是白色,当把一个格子的颜色改变(黑->白或者白-> ...
- 二进制枚举例题|poj1222,poj3279,poj1753
poj1222,poj3279,poj1753 听说还有 POJ1681-画家问题 POJ1166-拨钟问题 POJ1054-讨厌的青蛙
随机推荐
- 【repost】JavaScript Scoping and Hoisting
JavaScript Scoping and Hoisting Do you know what value will be alerted if the following is executed ...
- MVC+EF6+Oracle,提示ORA-01918: user '***' does not exist
1.在上下文里重载OnModelCreating: //没用到这个方法 protected override void OnModelCreating(DbModelBu ...
- maven配置和下载
下载链接:http://maven.apache.org/docs/ 以maven3.0.4为例,eclipse以kepler为例 环境变量的配置 1.系统变量-新建-变量名:MAVEN_HOME-变 ...
- AngularJS指令
1. AngularJS指令的特点: AngularJS通过被称为指令的新属性来扩展HTML,指令的前缀为ng-. AngularJS通过内置的指令来为应用添加功能. AngularJS允许你自定义指 ...
- ActiveMQ入门实例Demo
前面我们已经搭建和配置好了ActiveMQ,下面来看一个Demo,体验一下MQ. JMS 消息模型 JMS消息服务应用程序结构支持两种模型:点对点模型,发布者/订阅者模型. (1)点对点模型(Queu ...
- mac 10.11.6 自带apache配置记录
详细记录使用自带apache的一些问题 开启apache服务 作为2016年的新版本os,在系统偏好设置里没有网络共享了,所以可以通过终端,直接开启apache服务器: 开启apache:sudo a ...
- 日历插件FullCalendar应用:(二)数据增删改
接上一篇 日历插件FullCalendar应用:(一)数据展现. 这一篇主要讲使用fullcalendar插件如何做数据的增删改,用到了art.dialog web对话框组件,上一篇用到的webFor ...
- mybatis-generator指定列进行自动生成代码
目前mybatis-generator已经升级到1.3.3,功能比较强大,但是目前从table中如果字段较多可以选择忽略生产的字段(通过ignoreColumn属性实现,http://generato ...
- 企业SOA架构设计理论
SOA简介 SOA(Service-Oriented Architecture,面向服务架构)是一种将信息系统模块化为服务的架构风格.拥有了服务之后,我们就可以迅速地将这些服务按不同方式重新组合,从而 ...
- Xamarin.ios 调用接口
NSString urlstring = new NSString("http://211.155.229.230:8585/api/users/postregister"); ...