北大ACM(POJ1753-Flip Game)
Question:http://poj.org/problem?id=1753
问题点:穷举。
#include <iostream>
using namespace std;
bool a[][];//记录输入
bool b[][];//记录操作
bool c[][];//中间变量
bool judge()
{
int sum=;
for(int i=;i<;i++)
{
for(int j=;j<;j++)
{
sum+=c[i][j];
}
}
if(sum==||sum==) return true;
else return false;
}
int inttobools(int k)
{
int cur=;
int count=;
for(int i=;i<;i++)
{
for(int j=;j<;j++)
{
b[i][j]=k&<<cur++?true:false;
if(b[i][j]) count++;
}
}
return count;
}
void boolscpy()
{
for(int i=;i<;i++)
{
for(int j=;j<;j++)
{
c[i][j]=a[i][j];
}
}
}
int main()
{
memset(a,,*sizeof(char));
memset(b,,*sizeof(char));
memset(c,,*sizeof(char));
char ch;
int min=;
for(int i=;i<;i++)
{
for(int j=;j<;j++)
{
ch=getchar();
if(ch=='w')
a[i][j]=;
else
a[i][j]=;
}
getchar();
}
int s=;
for(int l=;l<;l++)
{
int count=inttobools(l);//转换b[][],并返回其中数字1的数目
if(count>=min) continue;
boolscpy();//赋值给c[][]
for(int i=;i<;i++)
{
for(int j=;j<;j++)
{
if(b[i][j])
{
c[i][j]=!c[i][j];
if(i>) c[i-][j]=!c[i-][j];
if(j>) c[i][j-]=!c[i][j-];
if(i<) c[i+][j]=!c[i+][j];
if(j<) c[i][j+]=!c[i][j+];
}
}
}
if(judge()) {min=count;s=l;}
} if(min==) cout<<"Impossible"<<endl;
else cout<<min<<endl;
return ;
}
北大ACM(POJ1753-Flip Game)的更多相关文章
- 北大 ACM 分类 汇总
1.搜索 //回溯 2.DP(动态规划) 3.贪心 北大ACM题分类2009-01-27 1 4.图论 //Dijkstra.最小生成树.网络流 5.数论 //解模线性方程 6.计算几何 //凸壳.同 ...
- 北大ACM - POJ试题分类(转自EXP)
北大ACM - POJ试题分类 -- By EXP 2017-12-03 转载请注明出处: by EXP http://exp-blog.com/2018/06/28/pid-38/ 相关推荐文: 旧 ...
- poj1753 Flip Game(BFS+位压缩)
题目链接 http://poj.org/problem?id=1753 题意 一个棋盘上有16个格子,按4×4排列,每个格子有两面,两面的颜色分别为黑色和白色,游戏的每一轮选择一个格子翻动,翻动该格子 ...
- poj1753,Flip Game,ArrayDeque<Node>
Flip Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 30449 Accepted: 13232 Descr ...
- 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
题意:4*4的正方形,每个格子有黑白两面,翻转格子使得4*4个格子显示全黑或全白,翻转要求:选中的那个格子,以及其上下左右相邻的格子(如果存在)要同时翻转.输出最小的达到要求的翻转次数或者Imposs ...
- 北大ACM题库习题分类与简介(转载)
在百度文库上找到的,不知是哪位大牛整理的,真的很不错! zz题 目分类 Posted by fishhead at 2007-01-13 12:44:58.0 -------------------- ...
- POJ1753——Flip Game
Flip Game Description Flip game is played on a rectangular 4x4 field with two-sided pieces placed on ...
- POJ-1753 Flip Game---二进制枚举子集
题目链接: https://vjudge.net/problem/POJ-1753 题目大意: 有4*4的正方形,每个格子要么是黑色,要么是白色,当把一个格子的颜色改变(黑->白或者白-> ...
- POJ-1753 Flip Game (BFS+状态压缩)
Description Flip game is played on a rectangular 4x4 field with two-sided pieces placed on each of i ...
随机推荐
- status pending状态
开发采用ssh,注解的方式,事物也application.xml配置了,但是在业务层没有使用@Transactional造成浏览器一直处于status pending状态,为什么没有使用@Transa ...
- python的一些总结5
上面4都是水的 恩每篇都一点知识点 用来写给不耐烦的人看..哈哈这篇 争取不水. 上面4篇如果 掌握 基本上是 80%常用的代码了. 1.下面讲一下 比较常用的代码: macro(jinja 上的功能 ...
- 理解TCP可靠的通信
1.TCP通信是可靠的,UDP通信是不可靠的.TCP是怎么保证通信可靠的呢? 2.实际项目中,用到串口通信,也要保证通信可靠,TCP的道理应该也是一样的. 3.通信之前,三次握手.可以这样认为:a.甲 ...
- CDOJ 486 Good Morning 傻逼题
Good Morning Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/486 ...
- iOS开发——语法篇&swift经典语法总结
swift经典语法总结 1:函数 1.1 func funcNmae()->(){} 这样就定义了一个函数,它的参数为空,返回值为空,如果有参数和返回值直接写在两个括号里就可以了 1.2 参数需 ...
- 通过GitHub和Hexo搭建个人博客
LinEvan个人博客 最终有自己的个人博客,逼格一下子提高说不少. 网上一搜教程一大堆,非常多已经写得非常好了,我就不凑这个热闹了.推荐一篇博文:怎样搭建一个独立博客--简明Github Pages ...
- 在 Fedora 里安装自带的 MATE和 cinnamon
参见 http://wiki.mate-desktop.org/download#fedora安装方法: yum groupinstall mate-desktop yum groupinstall ...
- int a[5]={}, &a+1与(int*)a+1的区别
#include <iostream> #include <typeinfo> using namespace std; int main() { int b, *pb; ch ...
- 关于Service常驻内存不被清理的解决方法.
众所周知, Service是跑后台的. 但是有些Rom厂商把一键清理做的真是太好用了, 以至于一键清理变成了一种习惯, Service已经变的不再是Service了. 那为什么像诸如360, 微信, ...
- C#_自动测试2_连连看外挂
GUI自动化测试和做外挂的原理很相似,都是模拟用户的鼠标和键盘操作, 给自己的程序写自动化就是做测试,给别人的程序写自动化就是外挂了. 本文使用的技术也同样适用制作“对对碰”,"找茬&quo ...