Упражнения на Java: прочитайте массовые данные и найдите количество островов
Java Basic: упражнение 237 с решением
На плоскости 10 вертикальных и горизонтальных квадратов. Каждый квадрат окрашен в синий и зеленый цвета. Синий представляет море, а зеленый представляет землю. Когда два зеленых квадрата соприкасаются с верхом и низом или справа и слева, говорят, что они заземлены. Область, созданная только одним зеленым квадратом, называется «остров». Например, на рисунке ниже показано пять островов.
Напишите Java-программу для чтения массовых данных и определения количества островов.
Входные данные :
Один набор данных представлен 10 строками из 10 чисел, представляющих зеленые квадраты в виде 1 и синие квадраты в виде нулей.
Вывод: для каждого набора данных выведите количество островков.
Иллюстрированная презентация:
Пример решения:
Java-код:
import java.util.Scanner;
public class test {
public static boolean[][] map;
public static int[][] move = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}};
public static void fds(int i, int j){
map[i][j] = false;
for(int k=0;k<4;k++){
int i2 = i+move[k][0];
int j2 = j+move[k][1];
if(0<=i2&&i2<10&&0<=j2&&j2<10&&map[i2][j2])fds(i2,j2);
}
}
public static void main(String[] args) {
System.out.println("Input 10 rows of 10 numbers representing green squares (island) as 1 and blue squares (sea) as zeros");
Scanner sc = new Scanner(System.in);
map = new boolean[10][10];
for(int i=0;i<10;i++){
char[] s = sc.next().toCharArray();
for(int j=0;j<10;j++){
map[i][j] = s[j]=='1';
}
}
int x = 0;
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
if(map[i][j]){
fds(i, j);
x++;
}
}
}
System.out.println("Number of islands:");
System.out.println(x);
}
}
Пример вывода:
Введите 10 строк из 10 чисел, представляющих зеленые квадраты (остров) как 1 и синие квадраты (море) как нули 1100000111 1000000111 0000000111 0010001000 0000011100 0000111110 0001111111 1000111110 1100011100 1110001000 Количество островов: 5
Блок - схема:
Редактор кода Java:
Внесите свой код и комментарии через Disqus.
Предыдущий: Напишите Java-программу для суммирования всех числовых значений (натуральных чисел), встроенных в предложение.
Далее: Напишите программу на Java для восстановления исходной строки, введя сжатую строку с этим правилом.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования