uva------(11464)Even Parity
D |
Even Parity Input: Standard Input Output: Standard Output |
---|
We have a grid of size N x N. Each cell of the grid initially contains a zero(0) or a one(1). The parity of a cell is the number of 1s surrounding that cell. A cell is surrounded by at most 4 cells (top, bottom, left, right).
Suppose we have a grid of size 4 x 4:
1 |
0 |
1 |
0 |
The parity of each cell would be |
1 |
3 |
1 |
2 |
---|---|---|---|---|---|---|---|---|
1 |
1 |
1 |
1 |
2 |
3 |
3 |
1 |
|
0 |
1 |
0 |
0 |
2 |
1 |
2 |
1 |
|
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
For this problem, you have to change some of the 0s to 1s so that the parity of every cell becomes even. We are interested in the minimum number of transformations of 0 to 1 that is needed to achieve the desired requirement.
Input
The first line of input is an integer T (T<30) that indicates the number of test cases. Each case starts with a positive integer N(1≤N≤15). Each of the next N lines contain N integers (0/1) each. The integers are separated by a single space character.
Output
For each case, output the case number followed by the minimum number of transformations required. If it's impossible to achieve the desired result, then output -1 instead.
Sample Input Output for Sample Input
3 3 0 0 0 0 0 0 0 0 0 3 0 0 0 1 0 0 0 0 0 3 1 1 1 1 1 1 0 0 0 |
Case 1: 0 Case 2: 3 Case 3: -1 |
---|
Problem Setter: Sohel Hafiz,
Special Thanks: Derek Kisman, Md. Arifuzzaman Arif
代码:
1 #include<cstdio>
2 #include<cstring>
3 #include<algorithm>
4 using namespace std;
5 const int maxn = 20;
6 const int INF = 1000000000;
7 int n,A[maxn][maxn],B[maxn][maxn];
8
9 int work(int s)
10 {
11 memset(B,0,sizeof(B));
12 for(int c=0 ; c<n;c++)
13 {
14 if(s&(1<<c))B[0][c]=1;
15 else if(A[0][c]==1) return INF;
16 }
17 for(int r=1;r<n ;r++)
18 {
19 for(int c=0;c<n;c++)
20 {
21 int sum=0;
22 if(r>1)sum+=B[r-2][c];
23 if(c>0)sum+=B[r-1][c-1];
24 if(c<n-1) sum+=B[r-1][c+1];
25 B[r][c]=sum%2;
26 if(A[r][c]==1&&B[r][c]==0)
27 return INF;
28 }
29 }
30 int cnt=0;
31 for(int r=0;r<n;r++)
32 {
33 for(int c=0;c<n;c++)
34 {
35 if(A[r][c]!=B[r][c])cnt++;
36 }
37 }
38 return cnt;
39 }
40 int main()
41 {
42 int T;
43 scanf("%d",&T);
44 for(int kase=1;kase<=T;kase++)
45 {
46 scanf("%d",&n);
47 for(int r=0;r<n;r++)
48 {
49 for(int c=0;c<n;c++)
50 {
51 scanf("%d",&A[r][c]);
52 }
53 }
54 int ans=INF;
55 for(int s=0;s<(1<<n);s++)
56 ans=min(ans,work(s));
57 if(ans==INF) ans=-1;
58 printf("Case %d: %dn",kase,ans);
59
60 }
61 return 0;
62 }
- 通过pl/sql来格式化sql(r4笔记第63天)
- 程序员如何写出杀手级的简历
- 过滤器第二篇【编码、敏感词、压缩、转义过滤器】
- JSP第二篇【内置对象的介绍、4种属性范围、应用场景】
- Struts2的配置和一个简单的例子
- 监听器第一篇【基本概念、Servlet各个监听器】
- 监听器第二篇【统计网站人数、自定义session扫描器、踢人小案例】
- 通俗易懂的分析如何用Python实现一只小爬虫,爬取拉勾网的职位信息
- JSP第一篇【JSP介绍、工作原理、生命周期、语法、指令、行为】
- 一条执行时间两天半的sql语句简化(r4笔记第62天)
- 05-01总结方法,数组(一维)
- 02 Java类的加载机制
- 权限管理系统
- 03 JVM的垃圾回收机制
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 机器人软件中间层 yarp-Yet Another Robot Platforms
- 3分钟短文:Laravel写个命令行,你就是下一个Geek!
- Android开发多年每天Crud不清楚自己的技术?来刷刷大厂的高端技术面试题就知道了
- MySQL案例:count(*)效率优化
- MUI进行APP混合开发实现下拉刷新和上拉加载 原创
- Android 给控件添加边框阴影效果
- 详解Android Selinux 权限及问题
- Android图片采样缩放功能实例代码
- Android开发中使用Intent打开第三方应用及验证可用性的方法详解
- Android 7.0开发获取存储设备信息的方法
- Android中默认系统的声音/大小修改和配置详解
- Android开发中计算器的sin、cos及tan值计算问题分析
- Android开发实现绘制淘宝收益图折线效果示例
- Android自定义View实现搜索框(SearchView)功能
- android 监听SD卡文件变化的实现代码