偶数矩阵(Even Parity, UVa 11464)

问题描述

  给你一个n×n的01矩阵(每个元素非0即1),你的任务是把尽量少的0变成1,

使得每个元素的上、下、左、右的元素(如果存在的话)之和均为偶数。

比如,如(a)所示的矩阵至少要把3个0变成1,最终如图(b)所示,才能保证其为偶数矩阵。

看图!



输入格式

  输入的第一行为数据组数T(T≤30)。每组数据的第一行为正整数n(1≤n≤15);

接下来的n行每行包含n个非0即1的整数,相邻整数间用一个空格隔开。

输出格式

  对于每组数据,输出被改变的元素的最小个数。如果无解,应输出-1。

PS:

我虽然不能排列每一个,但我可以排类第一行,然后让后面的根据第一行进行排列

package 第七次模拟;

import java.util.Scanner;

public class Demo3矩阵 {
static int n, Min,M=20;
static int [] [] a = new int [M][M];
static int [] [] b = new int [M][M];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int cas, t = 0;
cas=sc.nextInt();
while(t++<cas)
{
n=sc.nextInt();
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
a[i][j]=sc.nextInt(); Min = Integer.MAX_VALUE;
dfs(0);//开始枚举;
System.out.printf("Case %d: ",t);
if(Min==1e9)
System.out.printf("-1\n");
else
System.out.printf("%d\n",Min);
}
}
static int check(int x, int y)//将其上左右三面的值相加
{
int sum = 0;
if(x-1>=0) sum += b[x-1][y];
if(y-1>=0) sum += b[x][y-1];
if(y+1<n) sum += b[x][y+1]; return sum%2;//如果是偶数就返回0,奇数就返回1
}
static void dfs(int cur)
{
//利用深度优先遍历枚举第一行
if(cur!=n)
{
b[0][cur] = 1;
dfs(cur+1);
b[0][cur] = 0;
dfs(cur+1);
}
else//枚举完之后开始递推下面每一行的情况
{
for(int i = 1; i < n; i++)
for(int j = 0; j < n; j++)
b[i][j] = check(i-1,j);
int cou = 0;
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
if(a[i][j]==1&&b[i][j]==0)
return;//题目只能把0变1,不能把1变0,所以直接结束。
else if(a[i][j]==0&&b[i][j]==1)
cou++;//只有当出现原来为0,枚举出的结果中为1的情况,cou才+1
if(Min>cou)
Min = cou;
return;
} } }

Java实现偶数矩阵(Even Parity, UVa 11464)的更多相关文章

  1. 偶数矩阵 Even Parity,UVa 11464

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

  2. Even Parity UVA - 11464 (枚举)

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

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

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

  4. UVA 11464 偶数矩阵

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

  5. UVA.11464 Even Parity (思维题 开关问题)

    UVA.11464 Even Parity (思维题 开关问题) 题目大意 给出一个n*n的01方格,现在要求将其中的一些0转换为1,使得每个方格的上下左右格子的数字和为偶数(如果存在的话),求使得最 ...

  6. 状态压缩+枚举 UVA 11464 Even Parity

    题目传送门 /* 题意:求最少改变多少个0成1,使得每一个元素四周的和为偶数 状态压缩+枚举:枚举第一行的所有可能(1<<n),下一行完全能够由上一行递推出来,b数组保存该位置需要填什么 ...

  7. 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 ...

  8. UVa 11464 - Even Parity

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

  9. Java大数——快速矩阵幂

    Java大数——快速矩阵幂 今天做了一道水题,尽管是水题,但是也没做出来.最后问了一下ChenJ大佬,才慢慢的改对,生无可恋了.... 题目描述: 给a,b,c三个数字,求a的b次幂对c取余. 数据范 ...

随机推荐

  1. [hdu5399 Too Simple]YY

    题意:m个{1,2...n}→{1,2...,n}的函数,有些已知有些未知,求对任意i∈{1,2,...,n},f1(f2(...(fm(i)))=i的方案总数,为了方便简记为F(i) 思路:如果存在 ...

  2. Universalimageloader 原图片大小获取

    Universalimageloader1.9.5上还没有对外提供获取图片的原大小功能,如果需要获取图片的源大小,可参考stackoverflow上的解决办法 stackoverflow地址 主要实现 ...

  3. Vue中如何监听组件的原生事件

    在首页开发中,右下角有一个返回顶部的小箭头,将它单独封装成一个BackTop组件,但是它何时出现需要依赖于首页的滑动,即另外一个Scroll组件.如果直接在BackTop组件里面监听,则需要通过thi ...

  4. javascript 之 eventLoop

    首先,javascript 是一门单线程,无阻塞的脚本语言. 何为单线程:就是在任何时候都只有一条线程在执行代码. 无阻塞:就是执行代码任务时一路绿灯,畅通无阻. 无阻塞的实现主要依赖于一个机制,就是 ...

  5. linux常用命令---系统辅助命令

    系统辅助命令

  6. NetAnalyzer笔记 之 十二 NetAnalyzer 6.0 的使用方法 -- 1.初识NetAnalyzer

    上次写NetAnalyzer使用方法是2016年的时候了,在后来NetAnalyzer经过了巨大的版本更变,但是因为个人原因,一直未对使用方法进行更新,现在NetAnalyzer最新的6.0已经发布了 ...

  7. Oracle分页查询语句的写法

    分页查询是我们在使用数据库系统时经常要使用到的,下文对Oracle数据库系统中的分页查询语句作了详细的介绍,供您参考. AD:2013云计算架构师峰会精彩课程曝光 Oracle分页查询语句使我们最常用 ...

  8. CF834D

    题目链接:http://codeforces.com/contest/834/problem/D 题目大意:将一个有n个数的数列分成k段,每段的价值为该段中不同数字的个数,求k段的最大总价值. 解题思 ...

  9. Python_OpenCV学习记录01安装

    Python照样快! 众所周知,虽然Python语法简洁,编写高效,但相比C/C++运行慢很多.然 而Python还有个重要的特性:它是一门胶水语言!Python可以很容易地扩展 C/C++.Open ...

  10. SpringBoot系列——状态机(附完整源码)

    1. 简单介绍状态机 2. 状态机的本质 3. 状态机应用场景 1. 简单介绍状态机 状态机由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作.完成特定 ...