有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。

你站在其中一块黑色的瓷砖上,只能向相邻(上下左右四个方向)的黑色瓷砖移动。

请写一个程序,计算你总共能够到达多少块黑色的瓷砖。

输入格式

输入包括多个数据集合。

每个数据集合的第一行是两个整数 WW 和 HH,分别表示 xx 方向和 yy 方向瓷砖的数量。

在接下来的 HH 行中,每行包括 WW 个字符。每个字符表示一块瓷砖的颜色,规则如下

1)‘.’:黑色的瓷砖;
2)‘#’:白色的瓷砖;
3)‘@’:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合中唯一出现一次。

当在一行中读入的是两个零时,表示输入结束。

输出格式

对每个数据集合,分别输出一行,显示你从初始位置出发能到达的瓷砖数(记数时包括初始位置的瓷砖)。

数据范围

1≤W,H≤201≤W,H≤20

输入样例:

6 9
....#.
.....#
......
......
......
......
......
#@...#
.#..#.
0 0

输出样例:

45
import java.util.*;
public class Main{static char [][]g = new char[30][30];static int []dx = {-1,0,1,0};static int []dy = {0,1,0,-1}; static int n,m,x,y;public static void main(String[] args) {Scanner sc = new Scanner(System.in);while(true) {m = sc.nextInt();n = sc.nextInt();if(n == 0 && m == 0) {return;}for(int i = 0;i < n;i ++) {String s = sc.next();g[i] = s.toCharArray();for(int j = 0;j < m;j ++) {if(g[i][j] == '@') {x = i;y = j;g[i][j] = '1';}}}dfs(x,y);int ans = 0;for(int i = 0;i < n;i ++) {for(int j = 0;j < m;j ++) {if(g[i][j] == '1') {ans ++;}}}System.out.println(ans);}}static void dfs(int x,int y) {g[x][y] = '1';for(int i = 0;i < 4;i ++) {int a = x + dx[i];int b = y + dy[i];if(a >= 0 && a < n && b >= 0 && b < m && g[a][b] == '.') {dfs(a,b);}}}
}

红与黑 DFS(JAVA解法)相关推荐

  1. LeetCode 1195. Fizz Buzz Multithreaded--并发系列题目--Java 解法--AtomicInteger/CountDownLatch/CyclicBarrier

    题目地址:Fizz Buzz Multithreaded - LeetCode Write a program that outputs the string representation of nu ...

  2. LeetCode1117. Building H2O --Java解法--多线程保证执行顺序--AtomicInteger

    此文首发于我的个人博客:LeetCode 1117. Building H2O --Java解法–多线程保证执行顺序–AtomicInteger - zhang0peter的个人博客 LeetCode ...

  3. LeetCode 1115. Print FooBar Alternately--多线程并发问题--Java解法--CyclicBarrier, synchronized, Semaphore 信号量

    此文首发于我的个人博客:zhang0peter的个人博客 LeetCode题解专栏:LeetCode题解 LeetCode 所有题目总结:LeetCode 所有题目总结 题目地址:Print FooB ...

  4. LeetCode 85. Maximal Rectangle --python,java解法

    题目地址: Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing only 1 ...

  5. LeetCode 929 Unique Email Addresses--python一行解法,Java解法

    题目地址:Unique Email Addresses - LeetCode Every email consists of a local name and a domain name, separ ...

  6. LeetCode 804 Unique Morse Code Words--python,java解法

    题目地址:Unique Morse Code Words - LeetCode Difficulty:easy Acceptance:74.1% International Morse Code de ...

  7. java 旅行家的预算_洛谷 P1016 旅行家的预算 Java解法

    洛谷 P1016 旅行家的预算 Java解法 洛谷 P1016 旅行家的预算 Java解法 package com.two; import java.util.Scanner; public clas ...

  8. 洛谷P1433 吃奶酪--Java解法(货郎担问题)

    洛谷P1433 吃奶酪–Java解法(货郎担问题) 题目链接 解决思想 本题目是一个典型的货郎担问题,即从(0,0)点出发,所有点仅经过依次(我们可以用反证法证明如果有一个点经过两次其路径一定比每个点 ...

  9. 回文数(Java解法)

    回文数(Java解法) 给你一个整数 x ,如果 x 是一个回文整数,返回 true :否则,返回 false . 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 例如,121 是回文 ...

  10. 【蓝桥杯VIP】试题 历届试题 带分数(满分 Python解法+Java解法)

    [蓝桥杯VIP]试题 历届试题 带分数(满分 Python解法+Java解法) 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 100 可以表示为带分数的形式:100 = 3 + 6 ...

最新文章

  1. ubuntu上部署svn
  2. 神策数据保险行业解决方案,正式上线官网!
  3. 用 git 同步 Colab 与 Gitlab、Github 之间的文件
  4. vscode 快速调到定义处_vim技巧:在程序代码中快速跳转,在文件内跳转到变量定义处...
  5. 您第一次上网的速度是多少?
  6. (96)自动售货机状态转移图,面试必问(二十)(第20天)
  7. svd pca matlab,从SVD到PCA——奇妙的数学游戏
  8. php表示昨天_php 获取今日、昨日、上周、本月的起始与结束时间戳
  9. CAVLC基于上下文自适应的可变长编码
  10. svg转换pdf用php实现,如何使用javascript在JSPDF中将SVG文件转换为PDF
  11. 手电筒安卓_王思聪吃热狗数字时钟安卓apk下载安装ios现在
  12. python uint8怎么定义_Python ctypes.c_uint8方法代码示例
  13. 谷歌浏览器chorme,wap浏览器,字…
  14. android冷暖色调节
  15. 27.html的定位(position)和偏移量(offset)
  16. 使用minio进行文件存储
  17. [精简]什么是和弦?
  18. 一键装机linux_linux系统学习第十八天《搭建一键装机平台》终结篇
  19. VR企业宣传满足宣传需求给客户强烈的真实感
  20. 葡,西两国发展史(大航海时代)启示

热门文章

  1. Region Proposal by Guided Anchoring 阅读笔记
  2. AI 重聚知名已故歌手,发布四首原创歌曲
  3. 义哥征途登录显示服务器维护中,征途单机版
  4. elk笔记25--快速体验APM
  5. 洛谷-P1883-函数最小值
  6. adb 备份和还原apk应用数据
  7. (附源码)spring boot图书管理系统 毕业设计160934
  8. @property基本概念
  9. win10计算机本地组策略编辑器,win10本地组策略编辑器找不到怎么办_win10电脑没有gpedit.msc的解决办法...
  10. 用Excel做直方图(2):频率分布直方图