十四届蓝桥杯省赛Java B组 合并区域

 

就是将两个矩阵进行拼接,两矩阵可以旋转90 180 270 度。

因为数据比较小,所以这基本上就是一个大的枚举模拟加搜索,直接暴力求解。

import java.io.*;
import java.util.*;public class Main{static int n;static int N = 101;static int mod = (int)1e9 + 7;static StreamTokenizer stt = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));static int[][] f = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}};
//	static int[][] ff = {{0, -1, 0}, {0, 0, 1}, {0, 1, 0}, {0, 0, -1}, {1, 0, 0}, {-1, 0, 0}};
//	static int[] month = {0, 31,28,31,30,31,30,31,31,30,31,30,31};static int[][] o = new int[N][N];static int[][] p = new int[N][N];static int[][] m = new int[3 * N][3 * N];static int maxi;private static int dfs(int x, int y) {int k = 1;m[x][y] = 0;for(int i = 0; i < 4; i ++) {int nx = x + f[i][0], ny = y + f[i][1];if(nx < 1 || nx > 3 * n || ny < 1 || ny > 3 * n || m[nx][ny] == 0) continue;k += dfs(nx, ny);}return k;}private static void draw(int bx, int by, int[][] o2) {for(int i = bx, ii = 1; ii <= n; ii ++, i ++) {for(int j = by, jj = 1; jj <= n; jj ++, j ++) {m[i][j] = o2[ii][jj];}}}static void asd(int x, int y) throws IOException {// 在地图上画o矩阵draw(n + 1, n + 1, o);// 在地图上画p矩阵draw(x, y, p);// 分别枚举o矩阵和p矩阵所有的1进行深搜for(int i = 1; i <= n; i ++) {for(int j = 1; j <= n; j ++) {int nx = i + n, ny = j + n;if(m[nx][ny] == 1)maxi = Math.max(maxi, dfs(nx, ny));}}for(int i = 1; i <= n; i ++) {for(int j = 1; j <= n; j++) {int nx = i + x - 1, ny = j + y - 1;if(m[nx][ny] == 1) maxi = Math.max(maxi, dfs(nx, ny));}}}private static void sov() throws IOException {// 在一个三倍大的地图中,枚举p矩阵的坐上角顶点,默认o在中心的n阶矩阵位置for(int i = 1; i <= 2 * n + 1; i ++) {asd(1, i);asd(2 * n + 1, i);asd(i, 1);asd(i, 2 * n + 1);}}static void rotate() {int[][] s = new int[N][N];for(int i = 1; i <= n; i ++) {for(int j = 1; j <= n; j ++) {s[j][n - i + 1] = o[i][j];}}for(int i = 1; i <= n; i ++) {for(int j = 1; j <= n; j ++) {o[i][j] = s[i][j];}}}static void sovle() throws Exception {n = readInt();for(int i = 1; i <= n; i ++) {for(int j = 1; j <= n; j ++) {o[i][j] = readInt();}}for(int i = 1; i <= n; i ++) {for(int j = 1; j <= n; j ++) {p[i][j] = readInt();}}maxi = 0;
//		rotate();
//		for(int i = 1; i <= n; i ++){
//			for(int j = 1; j <= n; j ++) {
//				bw.write(o[i][j] + " ");
//			}
//			bw.write("\n");
//		}for(int i = 0; i < 4; i ++) {// 旋转o矩阵rotate();// 拼接两矩阵求解sov();}bw.write(maxi + "\n");}public static void main(String args[]) throws Exception {int t = 1;
//		t = Integer.parseInt(br.readLine());
//		t = readInt();while((t --) > 0) {
//		while((n = Integer.parseInt(br.readLine())) != 0) {sovle();}bw.flush();bw.close();}static int readInt() {try {stt.nextToken();} catch (IOException e) {e.printStackTrace();}return (int)stt.nval;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/542981.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《荒野大镖客》等优秀的国产游戏能成为国产3a的标杆吗

中国或许不需要3A&#xff0c;但对于一些玩家来说&#xff0c;国产3A更多的是一个梦想&#xff0c;就像动画爱好者期待的优秀国产2D动画一样。 提问者所说的“玩家众多”&#xff0c;其实非核心玩家占比很高。 其中有一些是《王者荣耀》、《和平精英》等轻手游玩家或者国内二次…

8 个最佳 Android 联系人恢复软件/应用程序 [很少有人知道]

丢失 Android 手机上的联系信息可能会令人沮丧&#xff0c;尤其是如果您没有在备份或其他平台上进行备份。但是&#xff0c;不必惊慌&#xff0c;因为有很多适用于Android的联系人恢复软件可用。我们了解找回丢失的联系人的重要性&#xff0c;这就是我们今天测试 8 个出色的联系…

C#构建类库

类库程序集能将类型组合成易于部署的单元&#xff08;DLL文件&#xff09;&#xff0c;为了使编写的代码能够跨多个项目重用&#xff0c;应该将他们放在类库程序集中。 一、创建类库 在C#中&#xff0c;构建类库是指创建一个包含多个类的项目&#xff0c;这些类可以被其他应用…

[Vue]组件间通讯

Vue组件间通讯 父子间通讯 非父子间通讯 父子间通讯 父组件通过 props 将数据传递给子组件父向子传值步骤 给子组件以添加属性的方式传值 子组件内部通过props接收 模板中直接使用 props接收 子组件利用 $emit 通知父组件修改更新 $emit触发事件&#xff0c;给父组件…

6、Design Script之列表

Range 在DesignScript中,Range是从起点到终点的一系列数字,使用指定的步距(间距类型),并有以下的初始化方法: start..end..step; start..end..#amount; start..end..~approximate; Range可以是数字的,也可以是字母的。 字母范围因大小写而异。 开始,结束. .#数量范围(…

html canvas怎么在图片上面加文字

在HTML canvas中&#xff0c;要让文字显示在图片上方&#xff0c;你需要按照以下步骤操作&#xff1a; 首先&#xff0c;使用drawImage()方法将图片绘制到canvas上。 然后&#xff0c;使用fillText()或strokeText()方法在canvas上绘制文本。 以下是一个简单的示例代码&#…

windbg调试协议wireshark抓包解析插件

把目录下文件复制到如下位置,Wireshark支持版本4.0以上 C:\Program Files\Wireshark\plugins\4.0\kdnet.lua C:\Program Files\Wireshark\gcrypt.dll C:\Program Files\Wireshark\luagcrypt.dll 启动 “C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\windbg.exe” -k …

【Linux C | 多线程编程】线程的基础知识

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

《烈焰》热播掀起国漫IP新热潮,玄机科技再显爆款制造实力

在这个春意盎然的3月&#xff0c;一部由玄机科技经典动画《武庚纪》改编的电视剧《烈焰》空降爱奇艺&#xff0c;于3月13日开播&#xff0c;迅速点燃了观众的热情。该剧凭借紧凑的剧情、精美的服化道以及高度还原的场景&#xff0c;不仅赢得了广大观众的喜爱&#xff0c;更在各…

基于ssm+layui的图书管理系统

基于ssmlayui的图书管理系统 账户类型分为&#xff1a;管理员&#xff0c;用户管理员私有功能用户私有功能公共功能技术栈功能实现图 视频演示 账户类型分为&#xff1a;管理员&#xff0c;用户 图书管理系统主要登录账户类型为管理员账户与用户账户 管理员私有功能 账户管理…

【Linux】Shell编程【一】

shell是一个用 C 语言编写的程序&#xff0c;它是用户使用 Linux 的桥梁。Shell 既是一种命令语言&#xff0c;又是一种程序设计语言。 Shell 是指一种应用程序&#xff0c;这个应用程序提供了一个界面&#xff0c;用户通过这个界面访问操作系统内核的服务。 Shell属于内置的…

MobileNeXt(ECCV 2020)

paper&#xff1a;Rethinking Bottleneck Structure for Efficient Mobile Network Design official implementation&#xff1a;GitHub - zhoudaquan/rethinking_bottleneck_design 存在的问题 Inverted residual block广泛应用于近年来的移动网络&#xff0c;它通过引入两…