poj--3279

题意:

给n*m的矩阵,0 1组成,每次翻转一个格子可以将上下左右的五个节点翻转,求,把所有的格子翻转成0;输出每个个字的翻转次数;最少字数;

做法:

从上到下,第一行翻转的情况确定的话就全确定了;因此只要枚举第一行的翻转情况就可以了;

第一行翻转0次或1次;所以可以用二进制化,不用dfs了;具体看代码实现;

对于每一种第一行看需要翻转的次数是否是最小的;

代码如此:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#define inf 0x3f3f3f3f
using namespace std;
int n,m,ans;
int a[][],vis[][]={},t[][]={},p[][]={,,,,,-,,,-,},an[][]={};
bool s[]; //vis数组用来记录主动翻转的情况;t数组用来记录一共翻转的次数;an数组用来记录最终结果;
int solve() //根据第一行的情况确定剩余所有行的情况;
{
for(int i=;i<m;i++)
{
if(vis[][i]==)
{
t[][i]++;
if(n>)
t[][i]++;
if(i<m-)
t[][i+]++;
if(i>)
t[][i-]++;
}
}
for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
{
if(t[i-][j]%!=a[i-][j])
{
vis[i][j]=;
for(int z=;z<;z++)
{
int x=i+p[z][],y=j+p[z][];
t[x][y]++;
}
}
}
}
for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
{
if(t[i][j]%!=a[i][j])
return ;
}
}
return ;
}
int main()
{
while(cin>>n>>m)
{
memset(a,,sizeof(a));
memset(vis,,sizeof(vis));
memset(t,,sizeof(t));
ans=inf;
for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
{
scanf("%d",&a[i][j]);
}
}
for(int i=;i<pow(2.0,m);i++)
{
memset(vis,,sizeof(vis));
for(int j=m-;j>=;j--)
{
s[j]=i&(<<j);
vis[][j]=s[j];
}
memset(t,,sizeof(t));
int temp=solve(),cou=;
if(temp==)
{
for(int i=;i<n;i++)
{
for(int j=m-;j>=;j--)
{
if(vis[i][j]==)
cou++;
}
}
if(cou<ans)
{
ans=cou;
for(int i=;i<n;i++)
{
for(int j=m-;j>=;j--)
an[i][j]=vis[i][j];
} }
}
}
if(ans!=inf)
for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
{
if(j!=)
printf(" ");
printf("%d",an[i][j]);
}
printf("\n");
}
else
printf("IMPOSSIBLE\n");
} return ;
}

最新文章

  1. javaScript事件(一)事件流
  2. 使用paramiko如何连接服务器?
  3. Evolutionary Computing: Assignments
  4. {Links}{Matting}{Saliency Detection}{Superpixel}Source links
  5. idea启动tomcat失败,1099端口被占用
  6. 系统后台图表生成文档说明-javascript
  7. JavaMail回复
  8. iOS-模糊查询
  9. SQL之trigger(触发器)
  10. 实例讲解webpack的基本使用第二篇
  11. Dynamics CRM Plugin DLL恢复工具
  12. angular ng-repeat 动态获取的dom片段 显示
  13. 【Java入门提高篇】Day33 Java容器类详解(十五)PriorityQueue详解
  14. spring boot 微服务例子一
  15. System.Runtime.InteropServices.COMException: 检索 COM 类工厂中 CLSID 为 {0002E510-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80040154
  16. Java 之 POI各Jar包作用
  17. Windows 2008 Server搭建Radius服务器的方法
  18. python-social-auth with Django: ImportError: No module named &#39;social_django&#39; 解决方法
  19. Laravel框架 -- Validator 可用的验证规则
  20. IT行业面试指导 计算机行业面试技巧 面试技巧

热门文章

  1. Caused by: java.lang.ClassNotFoundException: org.springframework.web.socket.server.standard.ServerEndpointExporter
  2. groups - 显示用户所在的组
  3. xpath定位和css定位对比
  4. Ecshop首页购物车数量调取问题
  5. MySQL内置函数:IP地址点分式与数字转换函数(INET_ATON/INET_NTOA)
  6. 01_9_Struts用ModelDriven接收参数
  7. C# 用qq邮箱发邮件
  8. js cookie 操作
  9. 命令行下创建MySQL数据库与创建用户以及授权
  10. 【markdown】图片的处理