给出最高15*15的0 1矩阵,每次可以翻转一个点,其相邻的4个点都被翻转,问最少翻转几次可以全部变为0

题中要求的字典序根本不用考虑。。。

枚举第一行的翻转所有翻转情况然后逐行向下更新即可,因为第一行确定后,后面的都有唯一解

#include "stdio.h"
#include "string.h"int n,m;
int vis[21][21],b[21][21],a[21][21],pri[21][21];void on(int x,int y)
{b[x][y]^=1;if (x-1>=0) b[x-1][y]^=1;if (y-1>=0) b[x][y-1]^=1;b[x+1][y]^=1;b[x][y+1]^=1;
}int main()
{int ok,ans,sum,cnt,i,j,w,key,flag;while (scanf("%d%d",&n,&m)!=EOF){for (i=0;i<n;i++)for (j=0;j<m;j++)scanf("%d",&a[i][j]);cnt=(1<<m)-1;ans=0x7fffffff;ok=0;for (w=0;w<=cnt;w++){memset(vis,0,sizeof(vis));memcpy(b,a,sizeof(a));sum=0;for (i=0;i<m;i++){key=w&(1<<i);if (key!=0){sum++;on(0,i);vis[0][i]=1;}}for (i=1;i<n;i++){if (sum>=ans) break;for (j=0;j<m;j++)if (b[i-1][j]==1){on(i,j);vis[i][j]=1;sum++;if (sum>=ans) break;}}if (sum>=ans || i!=n) continue;flag=1;for (j=0;j<m;j++)if (b[n-1][j]==1) {flag=0; break;}if (flag==1 && sum<ans){ok=1;ans=sum;memcpy(pri,vis,sizeof(vis));}}if (ok==0) printf("IMPOSSIBLE\n");else{for (i=0;i<n;i++){printf("%d",pri[i][0]);for (j=1;j<m;j++)printf(" %d",pri[i][j]);printf("\n");}}}return 0;
}

POJ 3279 搜索相关推荐

  1. D - Fliptile POJ - 3279(翻转问题)

    D - Fliptile POJ - 3279 题意: 给一个m*n的01矩阵,对某一块砖踩一脚,1->0 || 0->1, 求将整个举证全部变为0最少踩几次 典型的翻转问题,此类问题的特 ...

  2. POJ 3279(Fliptile)题解

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

  3. poj 3279 poj 1753

    poj 3279: Description Farmer John knows that an intellectually satisfied cow is a happy cow who will ...

  4. [kuangbin带你飞]专题一 简单搜索D - Fliptile(POJ 3279)

    题目大意 给一个N行M列的矩阵,值分别为0和1,每次你可以选择将一个变成相反状态,同时,它周围的四个数也会变为相反状态. 问:最少翻转多少次,可以将所有值都变成0 多个解,输出翻转次数最少的(若有次数 ...

  5. POJ 3279 Fliptile

    传送门:http://poj.org/problem?id=3279 Fliptile Time Limit: 2000MS   Memory Limit: 65536K Total Submissi ...

  6. 整理:poj 基本搜索

    参考:http://exp-blog.com/ https://blog.csdn.net/consciousman/article/details/54613292 POJ2488 – A Knig ...

  7. poj 1948(搜索+剪枝)

    解题思路:这道题看到数据量,想到应该搜索+剪枝应该可以过..可是别人的A了,我的却超时了... 我用了一个mark[a][b],表示前两条边长度分别为a和b时,是否已经处理过,如果是的话就直接跳出.. ...

  8. POJ - 3279 Fliptile(状态压缩+位运算+暴力)

    题目链接:点击查看 题目大意:给出一个n*m的01矩阵,为了好描述,我们设0和1是两个相反的状态,我们的目标是要将整个矩阵全部变成1,现在我们可以将某一个点(x,y)更改为相反的状态,不过相应的该点周 ...

  9. POJ 3323 搜索

    那个经典的立方块游戏应该很多人都玩过,要求把立方块从给定的位置移动到(0,0)所需要步数的最小值.地图无限大,坐标可为负. 算是3322的加强版?3322裸搜即可,加一些判断,直接BFS. 而这道题坐 ...

最新文章

  1. 【Python】zip函数的使用
  2. centos7 下 的lamp 的安装原创详细教程
  3. qt 子窗口写到线程就卡死_QT/C++实现卡通漫画风格化
  4. 【转】wpa_supplicant与wpa_cli之间通信过程
  5. python模块:调用系统命令模块subprocess等
  6. 淘宝双11的服务器架构分析(1)
  7. 【深入浅出】Java中 this关键字的四种用法
  8. 极品飞车最高通缉Ps2的秘籍
  9. centos6.5安装谷歌浏览器+谷歌浏览器flash插件安装+谷歌浏览器pdf阅读器安装
  10. macOS中修改hosts文件
  11. 腾讯云服务器无限更换ip,腾讯云服务器免费更换IP额度不足利用弹性IP地址更换...
  12. C++-线程的join和detach
  13. ssm框架bean_Bean简介:简化的WordPress框架
  14. python模拟计算器程序代码_python作业:模拟计算器
  15. LabVIEW编程开发Agilent 34401A(Keysight 34401A)例程与相关资料
  16. php12生肖是哪个,十二生肖对应的数字
  17. JavaScript连缀
  18. cesium 使用entities、primitives添加的模型并且改变模型颜色
  19. Gradle配置文件解决你的问题。
  20. 基于Photoshop CC2018讲解PS最新入门到精通

热门文章

  1. C++模板元编程(8)模板类的继承
  2. 笔记本插上网线后没有自动连接网络的处理办法
  3. HTML img标签align属性
  4. 夜光:车载通讯系统详细设计 (一)
  5. 已解决 UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters in position 26-29: ordinal not in r...
  6. 计算机考证考试上网题
  7. 局域网访问虚拟机WSX服务器,VMware的WSX
  8. CV顶刊!IJCV2022:G-GhostNet
  9. 基于[Python]的员工管理系统
  10. pipeline, dataflow, workflow 简述