кодесурса

Упражнения на Java: прочитайте массовые данные и найдите количество островов

script1adsense2code
script1adsense3code

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 программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code