题目链接:https://uva.onlinejudge.org/external/114/11464.pdf

和开关问题类似,只不过现在是用的位运算操作更简单了,其中要注意的是,只能将0变成1.

 1 #include <bits/stdc++.h>
 2
 3 using namespace std;
 4
 5 #define inf 0x3f3f3f3f
 6
 7 int a[20][20];
 8 int b[20][20];
 9 int n;
10
11 int dr[3] = {-1,0,0};
12 int dc[3] = {0,-1,1};
13
14 int sum(int di,int dj) {
15     int ans = 0;
16     for(int i=0;i<3;i++)
17     {
18         int dx = di + dr[i];
19         int dy = dj + dc[i];
20
21         if(dx>=0&&dx<n&&dy>=0&&dy<n)
22             ans +=b[dx][dy];
23     }
24     return ans;
25 }
26
27 bool test(int i) {
28     int x = sum(n-1,i);
29     if(x%2)
30         return false;
31     else return true;
32 }
33
34 int check(int s) {
35
36
37     for(int i=0;i<n;i++)
38         if(s&(1<<i)) b[0][i] = 1;
39         else b[0][i] = 0;
40
41     for(int i=0;i<n-1;i++)
42     {
43         for(int j=0;j<n;j++) {
44             int x = sum(i,j);
45             if(x%2==0)
46                 b[i+1][j] = 0;
47             else b[i+1][j] = 1;
48         }
49     }
50
51     for(int i=0;i<n;i++)
52         if(!test(i))
53         return inf;
54
55     int ans = 0;
56     for(int i=0;i<n;i++) {
57         for(int j=0;j<n;j++)
58         {
59             if(a[i][j]==1&&b[i][j]==0)
60                 return inf;
61         }
62     }
63
64     for(int i=0;i<n;i++)
65     {
66         for(int j=0;j<n;j++)
67             if(a[i][j]!=b[i][j])
68                 ans++;
69     }
70     return ans;
71 }
72
73 int main()
74 {
75     int kase = 1,t;
76     scanf("%d",&t);
77     while(t--) {
78
79         scanf("%d",&n);
80
81         for(int i=0;i<n;i++)
82             for(int j=0;j<n;j++)
83                 scanf("%d",&a[i][j]);
84
85         int ans = inf;
86         for(int s=0;s<(1<<n);s++)
87             ans = min(ans,check(s));
88
89         printf("Case %d: ",kase++);
90         if(ans==inf)
91             printf("-1\n");
92         else printf("%d\n",ans);
93     }
94     return 0;
95 }

转载于:https://www.cnblogs.com/TreeDream/p/6357744.html

Uva 11464 偶数矩阵相关推荐

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

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

  2. UVA11464偶数矩阵

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

  3. uva 11464 Even Parity

    https://vjudge.net/problem/UVA-11464 题意: 给出一个0,1矩阵,现在要求把这个矩阵中的某些0改为1,使得这个矩阵中每个格子的上下左右格子(如果存在)的值之和为偶数 ...

  4. UVA 10870 Recurrences 矩阵快速幂

    题意:给你递推公式要求矩阵快速幂的第n项 解题思路: 经典的矩阵快速幂递推第n项目做法. 解题代码: 1 // File Name: temp.cpp 2 // Author: darkdream 3 ...

  5. Even Parity UVA - 11464 (枚举)

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

  6. Z字形扫描(对矩阵进行Z字形扫描)

    问题描述: 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan).给定一个n×n的矩阵,Z字形扫描的过程如下图所示: 对于下面的4×4的矩阵, 1 5 3 9 3 7 ...

  7. even parity

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

  8. C++矩阵的对角线之和

    下面我会围绕奇数型矩阵和偶数型矩阵来展开. 什么是奇数型矩阵? eg.a[3][3].a[5][5].a[7][7].a[9][9]- 什么是偶数型矩阵? eg.a[4][4].a[6][6].a[8 ...

  9. 基于IOS平台的游戏之小拼图

    IOS/Xcode工具 一:主要功能 在拼图小游戏开发过程中,实现的主要的功能. 压缩图片:需要给传递过来的任意图片,根据手机模拟器中View大小,重新设置图片的尺寸,即压缩图片运用UIGraphic ...

最新文章

  1. Linux 应用层的时间编程【转】
  2. day 03 selenium与Beautifulsoup4的原理与使用
  3. python pyqt eric_Python3.6 + Pyqt5 + Eric6 环境搭建
  4. php购物车修改单价,php – woocommerce在结帐和购物车页面更改价格
  5. 计算机过程控制系统教材,过程控制系统-样章试读.PDF
  6. 解锁用户及数据库表,锁死进程
  7. [UI]实用案例--Shape绘制实用圆圈
  8. pytorch迁移学习后使用微调策略再次提高模型训练结果
  9. Java 开发流程、运行原理、JVM 规范与实现
  10. c语言入门视频(C语言入门视频教程,共20套,全部是经典(免费下载))
  11. 淘晶驰串口屏下载工程慢怎么办
  12. windows环境下安装selenium
  13. (unsigned char) ~0 1
  14. WPF 3D 贴图: 为你的二次元老婆们做个3D画廊
  15. ACM算法模板小汇总
  16. 22长安杯——个人赛
  17. 基于PHP和MySql的学生成绩管理系统(附完整版代码)
  18. excel网页服务器端,Excel服务VI――用Excel Web Services创建应用程
  19. 2.线性回归,梯度下降与正规方程
  20. 家庭NAS服务器(3)VM测试-固态缓存盘加速机械盘

热门文章

  1. 开通域名绑定DDNS
  2. Java将小数转换为成百分比输出
  3. js对象,原型,call,apply浅析
  4. CV_CAST_8U(val);的意义
  5. C++中的 typedef Vec<uchar> Vec3b; 是何意?
  6. CentOS开机自动运行程序的脚本
  7. gcc 提供的原子操作
  8. git回退commit_Git进阶 温故知新系列
  9. vc++ 将可执行文件链接到 DLL
  10. 前端大神用React刻了一个Windows XP