偶数矩阵(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. Spring Cloud Alibaba系列(三)使用feign进行服务调用

    什么是Feign Feign是spring cloud提供的一个声明式的伪http客户端,它使得调用远程服务就像调用本地服务一样简单,只需要创建一个接口并添加一天注解即可. Nacos很好的兼容了Fe ...

  2. python语法学习第七天--文件

    打开文件:open() 使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法. open(file, mode='r', buffering=-1, encoding=None ...

  3. Spring全家桶之spring boot(五)

    Thymeleaf简介 Thymeleaf是一个流行的模板引擎,该模板引擎采用Java语言开发,模板引擎是一个技术名词,是跨领域跨平台的概念,在Java语言体系下有模板引擎,在C#.PHP语言体系下也 ...

  4. Python 图像处理 OpenCV (1):入门

    引言 又开一个新的系列分享,对图像处理感兴趣的同学可以关注这个系列. 更新频率尽量保持一周两到三次推送. 新系列第一件事儿当然是资源推荐,下面是一些有关 OpenCV 的资源链接: 资源链接: 官方网 ...

  5. 智能制造:数字化协同技术在BIW焊装产线的应用

    随着汽车工业的发展,如何利用数字化技术提高整车制造水平,已经成为各厂商亟待解决的问题.通过数字化工厂系统的应用使得白车身整车项目前期工艺设计.生产线规划质量有了显著提升,数字化工厂已经成为现代焊装生产 ...

  6. python实现简单投资复利函数以及实现摇骰子猜大小函数

    复利函数: #!/user/bin/env python #-*-coding:utf-8 -*- #Author: qinjiaxi def invest(amount, rate, time): ...

  7. 「雕爷学编程」Arduino动手做(37)——MQ-3酒精传感器

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

  8. 【SpringBoot】SpringBoot 配置这一篇文章就够了

    SpringBoot 配置文件 一.配置文件 SpringBoot使用一个全局的配置文件,配置文件名是固定的: application.properties application.yml 配置文件的 ...

  9. docker file的基本使用-案例创建centos

    #基于镜像 FROM centos #作者 MAINTAINER xiaozhang #声明变量 ENV ROOT_PATH /usr/local/ #设置工作目录 用户进入容器之后终端默认路径 WO ...

  10. thymeleaf抛出项目上下文ServletContext ,session,request等信息

    @RequestMapping("/alls") public String allsinfo(HttpSession session, HttpServletRequest re ...