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-讨厌的青蛙
随机推荐
- phabricator-zh_CN汉化包
https://github.com/wanthings/phabricator-zh_CN 之前公司用这个做任务管理.可以将一些安排计划等指派给某个人跟进进度. 这个系统都是英文的,这是个缺憾.我找 ...
- (原创)使用VMware安装Ubuntu,怎么无法使用startx进入桌面模式?
最近在VMware中安装Ubuntu时,发现VMware的快速安装后是文本模式,无法使用startx进入桌面模式,非常不方便.此问题为默认安装方式,需要设置安装方式. 操作系统:Windows 8.1 ...
- 撸一段 SQL ? 还是撸一段代码?
记得刚入公司带我的研发哥们能写一手漂亮的 SQL,搜索准确.执行快.效率高. 配合Web项目中的查询展示数据的需求,基本是分分钟完成任务. 那段时间基本是仰视的态度,每天都去讨教一点手写 SQL 的要 ...
- ios应用程序结构
MVC开发模式 什么是mvc,相信有一定开发经验的程序员都应该知道. M —— 模型,为程序提供数据 V —— 视图,为用户提供界面 C —— 控制器,用来控制程序视图,即上面的V 在ios程序中,一 ...
- python网络编程-socket编程
一.服务端和客户端 BS架构 (腾讯通软件:server+client) CS架构 (web网站) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二.OSI七层 ...
- 四.Android adb命令(持续更新...)
1.安装:甭管从哪里下载下来的apk,放在指定的目录下,不一定非要是sdk的目录下:adb install "d:\hxcjaz.apk"(指定的一个目录)2.卸载:adb uni ...
- perl
introduction: http://www.yiibai.com/perl/perl_introduction.html functions: http://www.yiibai.com/per ...
- json 除去转义字符以及查看json错误
$param=stripslashes($_POST['param']); try{ //$param包含了文档指定的信息,...这里保存您的快递信息,$param的格式与订阅时指定的格式一致 $ar ...
- DedeCMS flink_add Getshell漏洞 管理员CSRF漏洞
DedeCMS flink_add Getshell漏洞 管理员CSRF漏洞 1.漏洞利用 由于tpl.php中的$action,$content,$filename变量没有初始化,从而能操纵这些变量 ...
- Javascript数值转换(string,int,json)
数值: 在JavaScript中,数值转换一般有三种方式: 一.Number(param)函数:param可以用于任何数据类型 1.1 param是Boolean值,true和false分别转换为1和 ...