https://vjudge.net/problem/UVA-11464

题意:

给出一个0,1矩阵,现在要求把这个矩阵中的某些0改为1,使得这个矩阵中每个格子的上下左右格子(如果存在)的值之和为偶数,问最少的改变次数,不能达到要求输出-1。

思路:

其实,只要第一行的状态定了,接下来所有行的状态就已经定了,这是经过手算得出的结果。根据一个格子的上左右的值之和,就可以确定它下面的格子的状态。

那么,只需要枚举第一行的状态就可以了,用二进制枚举的方法。

接下来,判断这个矩阵是否满足要求,注意的地方是,如果说原矩阵中为1的在改变后的矩阵中为0,那么这个肯定是不符合要求的,因为只能把0改为1,不能把1改为0。

代码:

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <algorithm>
 4 using namespace std;
 5
 6 int a[20][20];
 7 int b[20][20];
 8
 9 int main()
10 {
11     int t;
12
13     scanf("%d",&t);
14
15     int cas =0 ;
16
17     while (t--)
18     {
19         int n;
20
21         scanf("%d",&n);
22
23         for (int i = 0;i < n;i++)
24             for (int j = 0;j < n;j++)
25             scanf("%d",&a[i][j]);
26
27         int k = (1 << n);
28
29         int ans = 1000000;
30
31         for (int i = 0;i < k;i++)
32         {
33             for (int j = 0;j < n;j++)
34             {
35                 if ((1 << j) & i) b[0][j] = 1;
36                 else b[0][j] = 0;
37             }
38
39             for (int x = 0;x < n - 1;x++)
40                 for (int y = 0;y < n;y++)
41             {
42                 int sum = 0;
43
44                 if (x - 1 >= 0) sum += b[x-1][y];
45                 if (y - 1 >= 0) sum += b[x][y-1];
46                 if (y + 1 < n) sum += b[x][y+1];
47
48                 if (sum & 1) b[x+1][y] = 1;
49                 else b[x+1][y] = 0;
50             }
51
52             int tmp = 0;
53
54             bool f = 0;
55
56             for (int x = 0;x < n;x++)
57                 for (int y = 0;y < n;y++)
58             {
59
60                 if (f) break;
61
62                 if (a[x][y] == 0 && b[x][y] == 1)
63                 {
64                     tmp++;
65                 }
66                 else if (a[x][y] == 1 && b[x][y] == 0)
67                 {
68                     f = 1;
69                     break;
70                 }
71             }
72
73
74             if (f) continue;
75             else ans = min(ans,tmp);
76         }
77
78         if (ans == 1000000)
79         {
80             printf("Case %d: %d\n",++cas,-1);
81         }
82         else printf("Case %d: %d\n",++cas,ans);
83     }
84
85     return 0;
86 }

转载于:https://www.cnblogs.com/kickit/p/7592780.html

uva 11464 Even Parity相关推荐

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

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

  2. Even Parity UVA - 11464 (枚举)

    从来没有觉得枚举有多费脑子的.但是这道题还是很香的. 思路:就是非常简单的枚举啦.   从一般的枚举开始考虑.一般的做法就是在所有的格子中有两种状态1, 0. 而一共有225个格子,所有一共要枚举的情 ...

  3. Uva 11464 偶数矩阵

    题目链接:https://uva.onlinejudge.org/external/114/11464.pdf 和开关问题类似,只不过现在是用的位运算操作更简单了,其中要注意的是,只能将0变成1. 1 ...

  4. OI 刷题记录——每周更新

    每周日更新 2016.05.29 UVa中国麻将(Chinese Mahjong,Uva 11210) UVa新汉诺塔问题(A Different Task,Uva 10795) NOIP2012同余 ...

  5. 训练指南第一部分解题报告

    主要是提供训练指南第一部分解题报告链接,后面会持续更新中 307 - Sticks  (DFS+剪枝) 11292 - Dragon of Loowater (贪心) 11729 - Commando ...

  6. even parity

    转自http://www.acmerblog.com/uva-11464-even-parity-4653.html 这道题的算法实现态变态了,奇妙的技巧,至少我是这样认为的.我想了很久也不会,书上代 ...

  7. [搜索]UVa 129 困难的串

    题意:将一个包含两个相邻的重复子串的子串,称为"容易的串",其他为"困难的串". 输入正整数n和l,输出由前l个字符组成的,字典序第n小的困难的串. 输入样例: ...

  8. uva 401.Palindromes

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

  9. Uva 3767 Dynamic len(set(a[L:R])) 树套树

    Dynamic len(set(a[L:R])) Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 https://uva.onlinejudge.org/in ...

最新文章

  1. ​利用卷积神经网络学习脑电地形图表示进行分类
  2. BinaryReader 、BinaryWriter是方便用二进制方式读写int,double,string之类的数据
  3. 【Touchinput 】触摸和输入 概述(1)
  4. 三维建模:方法之CSG与B-Rep比较
  5. 梦真的是反的 | 今日最佳
  6. php语法基础考试,我的php学习第二十六天——PHP基础语法
  7. ubuntu常用状态查看命令
  8. C语言中的指针型函数值
  9. win10 快捷键大全(集合)
  10. Caused by: java.io.IOException: ZIP entry size is too large
  11. matlab量化股票基本面,获取数据 - MATLAB - 掘金量化
  12. 如何测量智能产品的AI智商水平,论AI的三种智商
  13. IOS开发之相机、相册页面英文问题
  14. 好消息,高清版谷歌卫星地图终于可以正常使用了
  15. 《张萌:高效能人士的自我管理》学习笔记
  16. 联想Y471A加装固态硬盘及解决启动黑屏问题
  17. rt-thread+SAL+W5500 以太网Socket通信
  18. 2020-08-23腾讯笔试 删除节点 数字拆分
  19. 全球与中国聚氨酯同步带市场深度研究分析报告
  20. 【CQgame】[幸运方块 v1.1.3] [Lucky_Block v1.1.3]

热门文章

  1. WannaCry勒索软件还在继续传播和感染中
  2. Java 403 forbidden错误解决
  3. Mybatis sql注入问题
  4. cocos2dX改变锚点位置
  5. Perl 安装 模块Net::SSH2 有些0day是ssh2
  6. 一个个人网站如何融资一千万
  7. Oracle 游标的各种写法
  8. boost库shared_ptr实现桥接模式
  9. Java多线程(3) Volatile的实现原理
  10. Apache POI操作Excel导出JAVABEAN对象方法