Fliptile

  题目大意:农夫想要测牛的智商,于是他把牛带到一个黑白格子的地,专门来踩格子看他们能不能把格子踩称全白

  这一题其实就是一个枚举题,只是我们只用枚举第一行就可以了,因为这一题有点像开关一样,一个翻了,另一个就要跟着一起翻,第一行会影响下面所有行,而且影响情况只有一种,所以枚举完了以后我们不断模拟就可以了

  

 #include <iostream>
#include <functional>
#include <algorithm> using namespace std; static int map[][], flip[][], ans_map[][], M, N;
static int dirx[] = { -, , , };
static int diry[] = { , -, , }; int solve(void);
int get_color(const int, const int); int main(void)//开关问题,枚举第一行即可得到下面几行的关系
{
int ans, tmp;
while (~scanf("%d%d", &N, &M))//读图
{
for (int i = ; i < N; i++)
for (int j = ; j < M; j++)
scanf("%d", &map[i][j]);
ans = INT_MAX;
for (int i = ; i < << M; i++)//枚举第一行
{
memset(flip, , sizeof(flip));
for (int j = ; j < M; j++)//枚举结果填入第一行
if (( << j & i) != )
flip[][M - j - ] = ;
tmp = solve();
if (tmp >= && tmp < ans)
{
ans = tmp;
memcpy(ans_map, flip, sizeof(flip));
}
} if (ans == INT_MAX)
printf("IMPOSSIBLE\n");
else
{
for (int i = ; i < N; i++)
{
for (int j = ; j < M; j++)
printf("%d ",ans_map[i][j]);
printf("\n");
}
}
}
return ;
} int solve(void)
{
int ans = ;
for (int i = ; i < N; i++)//从第二行开始一行一行模拟
for (int j = ; j < M; j++)
if (get_color(j, i - ) == )//记住是上一行翻的牌子
flip[i][j] = ;//说明需要翻 for (int j = ; j < M; j++)//得到最后一行的所有格子的颜色,如果还有黑色,则说明这一步无法把格子全部翻转成白色
if (get_color(j, N - ) == )
return -; for (int i = ; i < N; i++)//统计步数
for (int j = ; j < M; j++)
if (flip[i][j])
ans++;
return ans;
} int get_color(const int x, const int y)
{
//得到(x,y)位置的颜色
int ny, nx, sum = map[y][x]; for (int i = ; i < ; i++)
{
nx = x + dirx[i]; ny = y + diry[i];
if (( <= nx&&nx < M) && ( <= ny&&ny < N))
sum += flip[ny][nx];
}
return sum % ;
}

  

Enum:Fliptile(POJ 3279)的更多相关文章

  1. Fliptile POJ - 3279 (开关问题)

    Fliptile Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 16483   Accepted: 6017 Descrip ...

  2. Fliptile(POJ 3279)

    原题如下: Fliptile Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 16494   Accepted: 6025 D ...

  3. kuangbin专题 专题一 简单搜索 Fliptile POJ - 3279

    题目链接:https://vjudge.net/problem/POJ-3279 题意:格子有两面,1表示黑色格子,0表示白色格子,奶牛每次可以踩一个格子,踩到的格子和它周围的上下左右格子都会翻面,也 ...

  4. POJ 3279(Fliptile)题解

    以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] 给定长宽的黑白棋棋盘摆满棋子,每次操作可以反转一个位置和其上下左右共五个位置的棋子的颜色,求要使用最少翻转次数将所有棋子反转为黑 ...

  5. POJ 3279 Fliptile(翻格子)

    POJ 3279 Fliptile(翻格子) Time Limit: 2000MS    Memory Limit: 65536K Description - 题目描述 Farmer John kno ...

  6. POJ.3279 Fliptile (搜索+二进制枚举+开关问题)

    POJ.3279 Fliptile (搜索+二进制枚举+开关问题) 题意分析 题意大概就是给出一个map,由01组成,每次可以选取按其中某一个位置,按此位置之后,此位置及其直接相连(上下左右)的位置( ...

  7. 状态压缩+枚举 POJ 3279 Fliptile

    题目传送门 /* 题意:问最少翻转几次使得棋子都变白,输出翻转的位置 状态压缩+枚举:和之前UVA_11464差不多,枚举第一行,可以从上一行的状态知道当前是否必须翻转 */ #include < ...

  8. 【枚举】POJ 3279

    直达–>POJ 3279 Fliptile 题意:poj的奶牛又开始作孽了,这回他一跺脚就会让上下左右的砖块翻转(1->0 || 0->1),问你最少踩哪些砖块才能让初始的砖块全部变 ...

  9. poj 3279 Fliptile (简单搜索)

    Fliptile Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 16558   Accepted: 6056 Descrip ...

随机推荐

  1. Linux下更新时间

    方法一.使用命令 ntpdate time-a.nist.gov 方法二.本地安装ntpdate客户端 在本地安装ntpdate客户端,更新时用 ntpdate cn.pool.ntp.org 如果你 ...

  2. Java字节流:InputStream OutputStream

    字节输入流:InputStream 类声明: public abstract class InputStream implements Closeable 位于java.io包下,是一个抽象类. 官方 ...

  3. 2014 牡丹江区域赛 B D I

    http://acm.zju.edu.cn/onlinejudge/showContestProblems.do?contestId=358 The 2014 ACM-ICPC Asia Mudanj ...

  4. 成功的背后!(给所有IT人)

    转载:来自CSDN第一名博主:http://blog.csdn.net/phphot/article/details/2187505 成功的背后,有着许多不为人知的故事,而正是这些夹杂着泪水和汗水的过 ...

  5. [译]angularjs directive design made easy

    原文: http://seanhess.github.io/2013/10/14/angularjs-directive-design.html AngularJS directives很酷 Angu ...

  6. Notepad++的插件

    1.4. Notepad++中常用的插件 1.4.1. 插件管理器: Plugin Manager 插件功能:此插件可以帮你管理插件,包括查看当前已经安装的插件有哪些,以及自动帮你下载相应的插件. 插 ...

  7. JS替换函数

    var id= id.replace(/\,/g, "','"); 记一下,

  8. codevs2574 波兰表达式

    题目描述 Description 对于 加.减.乘.除这种四则运算的表达式,我们使用的是先乘除.后加减的从左到右的顺序进行运算,如果要指定特定的顺序,就要增加括号进行表达,比如 (A+B)*C , A ...

  9. 遇到了IAR烧写程序出错,附解决办法The stack plug-in failed to set a breakpoint on "main"

    今天做无线串口调试的时候用IAR7.51往CC2530无线模块烧程序的时候遇到了问题: 先是下载过程中有许多警告,然后就是提示无法跳断点,找不到main方法,每次烧程序都出现: The stack p ...

  10. Sturts2的action不执行任何方法的原因

    今天用<s:url action="xxx">调用action的时候出现了一个“异常”, action里的任何方法都没有执行,直接返回success,而且没有任何报错. ...