(Java实现) 细胞
2024-08-30 06:31:07
细胞
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 8 Accepted Submission(s) : 4
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。
Input
输入第一行为T,表示有T组测试数据,对于每组测试数据第一行为m和n(1<m,n<100),表示矩阵的行和列。下面m行是矩阵。
Output
对于每组测试数据,输出矩阵中的细胞个数。
Sample Input
1
4 10
0234500067
1034560500
2045600671
0000000089
Sample Output
4
Author
//思路;题目意思是一片区域内没有一个数字0 那就是一个细胞 所以不需要对标记数组清零 回溯
import java.util.Scanner;
public class xibao {
public static int a,b;
public static boolean [] [] bool;
public static char [][] num;
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
a = sc.nextInt();
b = sc.nextInt();
int sum = 0;
num = new char [a][b];
bool = new boolean [a][b];
for (int i = 0; i < a; i++) {
String s = sc.next();
for (int j = 0; j < b; j++) {
num[i][j]=s.charAt(j);
}
}
for (int i = 0; i < a; i++) {
for (int j = 0; j < b; j++) {
if(num[i][j]!='0' && !bool[i][j]){
sum++;
dfs(i,j);
}
}
}
System.out.println(sum);
}
public static void dfs(int x,int y){
if(x>=a || x<0 || y>=b || y<0 || num[x][y]=='0' || bool[x][y]) return;
bool[x][y]=true;
dfs(x+1,y);
dfs(x,y+1);
dfs(x-1,y);
dfs(x,y-1);//清除细胞的爆搜部分
}
}
最新文章
- MT4平台经验总结
- LINUX下NFS系统的安装配置
- HTML标签总结
- 【JavaScript】深入分析JavaScript的关系运算和if语句
- 武汉科技大学ACM :1009: 华科版C语言程序设计教程(第二版)习题6.11
- MarkDown/reST 文档发布流水线
- 模型驱动 ModelDriven
- check2
- inux_异常_07_ftp查看不到文件列表
- bzoj:3085: 反质数加强版SAPGAP
- SQL Server 历史SQL执行记录
- 理解Go Interface
- JavaScript原型详解
- MySQL应用异常问题解决
- Qt学习记录--02 Qt的信号槽机制介绍(含Qt5与Qt4的差异对比)
- 《mysql必知必会》学习_第14章_20180806_欢
- WampServer 安装使用详解
- 404 Note Found队 Beta答辩总结
- bat判断进程是否存在
- 在进行vue的学习,项目中需要引入bootstrap、jquery的步骤。