题意:

      给你一个n*n的01矩阵,你的你的任务是吧尽量少的0变成1,使得每个元素的上下左右之和均为偶数(如果有的话),比如

0 0 0         0 1 0

1 0 0  --->   1 0 1   

0 0 0         0 1 0

是变换了3个。

思路:

      这个题目拿到手的最暴力的反应就是直接搜索枚举所有,那么时间复杂度是

O(2^(15*15))直接就跪了,其实这个题目有个很关键的突破口,就是只要第一行确定了,那么其他的都是确定的,这个可以自己找几个矩阵试验下,所以我们可以直接深搜去枚举第一行,然后根据第一行吧所有的都填充完,看看有没有冲突,如果没有就更新答案的最优值,这样的时间复杂度是O(2^15*15*15) = O(32768 * 225)没啥大压力。

     

#include<stdio.h>

int map[16][16] ,now[16][16];

int Ans ,n;

void DFS(int noww)

{

   if(noww == n + 1)

   {

      int tmp = 0; 

      for(int i = 1 ;i <= n ;i ++)

      if(!map[1][i] && now[1][i]) tmp ++;   

      for(int i = 2 ;i <= n ;i ++)

      for(int j = 1 ;j <= n ;j ++)

      {

          int ss = 0 ,nowi = i - 1 ,nowj = j;

          if(nowi >= 2) ss += now[nowi-1][j];

          if(nowj >= 2) ss += now[nowi][j-1];

          if(nowj <= n-1) ss += now[nowi][j+1];

          now[i][j] = ss % 2;

          if(!map[i][j] && now[i][j]) tmp ++;

          if(map[i][j] && !now[i][j]) return;

      }

      if(Ans == -1 || Ans > tmp) Ans = tmp;

      return;

   }

   

   now[1][noww] = 1;

   DFS(noww+1);

   if(!map[1][noww])

   {

       now[1][noww] = 0;

       DFS(noww+1);

   }

}

int main ()

{

    int i ,j ,t ,cas = 1;

    scanf("%d" ,&t);

    while(t--)

    {

       scanf("%d" ,&n);

       for(i = 1 ;i <= n ;i ++)

       for(j = 1 ;j <= n ;j ++)

       scanf("%d" ,&map[i][j]);

       Ans = -1;

       DFS(1);

       printf("Case %d: %d\n" ,cas ++ ,Ans);

    }

    return 0;

}

      

UVA11464偶数矩阵的更多相关文章

  1. UVA 11464 偶数矩阵

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  2. 【巧妙算法系列】【Uva 11464】 - Even Parity 偶数矩阵

    偶数矩阵(Even Parity, UVa 11464) 给你一个n×n的01矩阵(每个元素非0即1),你的任务是把尽量少的0变成1,使得每个元素的上.下.左.右的元素(如果存在的话)之和均为偶数.比 ...

  3. 偶数矩阵 Even Parity,UVa 11464

    题目描述 Description 给你一个n*n的01矩阵(每个元素非0即1),你的任务是把尽量少的0变成1,使得每个元素的上.下.左.右的元素(如果存在的话)之和均为偶数.如图所示的矩阵至少要把3个 ...

  4. Java实现偶数矩阵(Even Parity, UVa 11464)

    偶数矩阵(Even Parity, UVa 11464) 问题描述 给你一个n×n的01矩阵(每个元素非0即1),你的任务是把尽量少的0变成1, 使得每个元素的上.下.左.右的元素(如果存在的话)之和 ...

  5. UVA 11464 偶数矩阵(递推 | 进制)

    题目链接:https://vjudge.net/problem/UVA-11464 一道比较好的题目. 思路如下: 如果我们枚举每一个数字“变”还是“不变”,那么需要枚举$2^{255}$种情况,很显 ...

  6. 【转载】UVa 11464 Even Parity 偶数矩阵

    题意:给你一个n*n的01矩阵,让你把这个矩阵中尽量少的0转换成1,使得矩阵每个位置的上下左右四个相邻的数加起来能被2整除,求最少的转换数 首先,n 的规模并不大,最大只有15.但是完全枚举整个矩阵显 ...

  7. UVa 11464 Even Parity 偶数矩阵

    给你一个 n * n 的 01 矩阵,现在你的任务是将这个矩阵中尽量少的 0 转化为 1 ,使得每个数的上下左右四个相邻的数加起来是偶数.求最少的转化个数. 首先,n 的规模并不大,最大只有15.但是 ...

  8. UVa 11464 - Even Parity

    解题报告:题目大意有一个N×N的矩阵,矩阵中的元素只有1或0,如果说对于一个矩阵,它的所有的点的上下左右的点的和是偶数,则称这个矩阵为偶数矩阵,现在给你一个任意的矩阵,要求的是如果要把这个矩阵变成偶数 ...

  9. UVA 11464 Even Parity(部分枚举 递推)

    Even Parity We have a grid of size N x N. Each cell of the grid initially contains a zero(0) or a on ...

随机推荐

  1. 通过穷举法快速破解excel或word加密文档最高15位密码

    1.打开文件 2.工具 --- 宏 ---- 录制新宏 --- 输入名字如 :aa 3.停止录制 ( 这样得到一个空宏 ) 4.工具 --- 宏 ---- 宏 , 选 aa, 点编辑按钮 5.删除窗口 ...

  2. Codeforces Round #685 (Div. 2)

    待补 A #include <bits/stdc++.h> using namespace std; int n; int main() { int __; scanf("%d& ...

  3. JS五种绑定彻底弄懂this,默认绑定、隐式绑定、显式绑定、new绑定、箭头函数绑定详解(转载)

    目录 壹 ❀ 引 贰 ❀ this默认绑定 叁 ❀ this隐式绑定 1.隐式绑定 2.隐式丢失 肆 ❀ this显式绑定 伍 ❀ new绑定 陆 ❀ this绑定优先级 柒 ❀ 箭头函数的this ...

  4. 如何快速的插入 100W数据到数据库,使用PreparedStatement 最快实现!

    有时候,我们使用数据库的时候,如何快速的添加测试数据到数据库中,做测试呢,添加100W 数据,如果使用工具的话可能很慢,这里我推荐大家使用 PreparedStatement 预编译 去进行操作:单线 ...

  5. js 检测当前浏览其类型

    需求:检测并打印当前使用的浏览器类型 <script type="text/javascript"> function getBrowser(){ const str ...

  6. .zip爆破

    .zip爆破 Python的优化问题 Python在计算密集型任务方面没有明显的多线程优化,多线程更加适合用于处理I/O密集型任务(如网络请求).爆破任务使用顺序执行即可. 编写Python脚本 一个 ...

  7. dfs求连通块

    递归 递归是什么?绝大部分人都会说:自己调用自己,刚开始我也是这样理解递归的.确实没错,递归的确是自己调用自己.递归简单的应用:编写一个能计算斐波那契数列的函数,也就是这样: int fb(int n ...

  8. Java中的Set集合

    Set接口简介 Set接口和List接口一样,同样继承自Collection接口,它与Collection接口中的方法基本一致,并没有对Collection接口进行功能上的扩充,它是比Collecti ...

  9. Nodejs学习笔记(1) Nodejs安装+借助express模块简单部署服务器

    1 安装 1.1 下载和安装 1.2 什么是REPL?如何使用? 1.3 npm对单一模块的安装和删除功能 1.4 通过package.json自定义模块(安装模块) 1.5 设置全局目录 2 部署网 ...

  10. 如何提高Web应用系统的性能?

    随着互联网信息技术的发展,人们逐渐开始习惯在网络上交友.购物.学习.娱乐.工作,甚至是找工作.因此市场对网站的响应速度也提出了新的要求,提高Web应用系统的性能成为急需解决的关键问题.本文将会给出一些 ...