Acwing1113. 红与黑

2024-03-21 21:36
文章标签 红与黑 acwing1113

本文主要是介绍Acwing1113. 红与黑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Problem: Acwing1113. 红与黑

文章目录

  • 思路
  • 解题方法
  • 复杂度
  • Code

思路

这是一道经典的洪水填充问题,可以使用dfs搜索和bfs搜索来解决。 ′ . ′ : '.' : .:表示黑色瓷砖,‘#’:表示红色瓷砖,‘@’表示黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合中唯一出现一次。我们可以填充所有的黑色瓷砖,然后统计黑色瓷砖的个数。

解题方法

首先,遍历所有的瓷砖记录起始位置,将起始位置’@‘标记为’.‘,便于后面进行计算。
然后从起始位置开始进行dfs,把起始位可以延伸到的位置全部标记成’H’。
最后遍历整块区域统计’H’个数,输出答案即可。

复杂度

时间复杂度:

假设砖块的个数为N,每个砖块最多被遍历4次,所以时间复杂度为 O ( N ) O(N) O(N)

空间复杂度:

使用了一个二维数组来存储砖块的状态,所以空间复杂度为 O ( N ) O(N) O(N)

Code

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;public class Main {static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));static StreamTokenizer sr = new StreamTokenizer(in);static int MAXN = 25;static char[][] matrix = new char[MAXN][MAXN];static int w, h;public static void main(String[] args) throws IOException {while (true) {w = nextInt();h = nextInt();if(w == 0 || h == 0) {return;}
// 			in.readLine();for (int i = 0; i < h; i++) {matrix[i] = in.readLine().toCharArray();}int sx = 0;int sy = 0;for (int i = 0; i < h; i++) {for (int j = 0; j < w; j++) {if (matrix[i][j] == '@') {sx = i;sy = j;matrix[i][j] = '.';}}}dfs(sx, sy); // 对所有的黑色砖块进行填充 'H'int res = 0;for (int i = 0; i < h; i++) {for (int j = 0; j < w; j++) {if (matrix[i][j] == 'H') {res++;}}}out.println(res);out.flush();}}private static void dfs(int sx, int sy) {// TODO Auto-generated method stubif (sx < 0 || sx >= h || sy < 0 || sy >= w || matrix[sx][sy] != '.') {return;}matrix[sx][sy] = 'H';dfs(sx + 1, sy);dfs(sx - 1, sy);dfs(sx, sy + 1);dfs(sx, sy - 1);}static int nextInt() throws IOException {sr.nextToken();return (int) sr.nval;}}

这篇关于Acwing1113. 红与黑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/833924

相关文章

HDU1312 / POJ1979 / ZOJ2165 Red and Black(红与黑) 解题报告

题目链接:HDU1312 / POJ1979 / ZOJ2165 Red and Black(红与黑) Red and Black Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 9902    Accepted Submiss

1113. 红与黑--Flood Fill 算法

目录 1113. 红与黑--Flood Fill 算法---宽搜(BFS)或DFS) 输入格式 输出格式 数据范围 输入样例: 输出样例: 思路: 1.BFS 思路: 2.DFS 思路 方法一:(BFS)代码: 方法二:深搜(DFS)代码: 运行结果: 1113. 红与黑--Flood Fill 算法---宽搜(BFS)或DFS) 有一间长方形的房子,地上铺了红

【C++进阶】红黑树的复仇(红与黑的爱恨厮杀)

🪐🪐🪐欢迎来到程序员餐厅💫💫💫           主厨:邪王真眼 主厨的主页:Chef‘s blog    所属专栏:c++大冒险    总有光环在陨落,总有新星在闪烁 引言: 之前我们学习了 AVL树,不得不惊叹于他那近乎绝对的平衡,然而也惋惜于插入删除效率的低下,今天要讲的红黑树则是以相对的平衡换来了插入删除效率的大幅提高,可谓是各有千秋 ps:建议

红与黑(典bfs)

0326重做,成功 数据范围 1≤W,H≤20 输入样例: 6 9 ....#. .....# ...... ...... ...... ...... ...... #@...# .#..#. 0 0 输出样例: 45 #include<algorithm>#include<iostream>#include<cstring>#include<queu

【C++练级之路】【Lv.16】红黑树(冰与火的碰撞,红与黑的史诗)

快乐的流畅:个人主页 个人专栏:《C语言》《数据结构世界》《进击的C++》 远方有一堆篝火,在为久候之人燃烧! 文章目录 引言一、红黑树的概念二、红黑树的模拟实现2.1 结点2.2 成员变量2.3 插入情况一:uncle在左,parent在右==如果uncle存在且为红色==:==如果uncle不存在,或者存在且为黑色==: 情况二:pa

红与黑(c++题解)

题目描述 有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。 输入格式 包括多个数据集合。每个数据集合的第一行是两个整数W和H,分别表示x方向和y方向瓷砖的数量。W和H都不超过20。在接下来的H行中,每行包括W个字符。每个字符表示一块瓷砖的颜色,规则如下 1)‘.’:黑色的瓷砖

区块链的“红与黑”——金融理想主义的中国幻影?

本文写于2017年2月,首发于量子学派。 零 小岛上的记账本 在一个小岛上,出现了一种新的记账方式(共识机制),与其它小岛不一样,他们不是用叶子(叶子每年都会增长)作为中介来交换商品,而是将每个人的流水记在账本上,只要得到岛上N个人(节点)认可,那么系统就认为这个账目是对的,所有的交易都在账目上用数字表示,因为账目是公开透明的,每个岛民都可以对账单进行检查,杜绝了造假可能,这个账目就被称之为“

红与黑 —— dfs

思路:看到题的时候,首先想到了八连通问题,有相似的部分。 import java.util.Scanner;public class Main{static int ans;static int dx[]= {-1,0,1,0 };static int dy[]= {0,1,0,-1 };pub

网易云音乐的“红与黑”

如果可以给网易云音乐自己定位一个“主导色”,那它应该是红色的。红色代表着热烈、鲜活与向上,与网易云音乐奔跑冲刺“全球音乐社区第一股”的形象不谋而合。 在与拥有雄厚资本实力的腾讯音乐竞争中,处于顺位的网易云音乐,一方面扮演者全球最大音乐社区的角色,另一方面则难掩亏损尴尬。招股书显示,2018年至2020年,网易云音乐三年运营亏损累计超48亿元。 那么,网易云音乐能否突破自身盈利瓶颈,为用户持续带

CTF训练营万里追踪—红与黑

没有提示只上图!!那就只好调用解图神器stegsolve,不断的点点点,发现没找到答案,突然发现。。。打开图片没有全屏,图片没有整体都搜查到,我把图片下半部分拉出来,再点点点,找到了答案。。。