View Code of Problem 62

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		while(sc.hasNext()) {
			int m = sc.nextInt();
			int n = sc.nextInt();
			sc.nextLine();
			if(m == 0 && n == 0) {
				break;
			}
			int[][] arr = new int[m][n];
			for(int i = 0; i < m; i ++) {
				if(n != 0) {
					String nextLine = sc.nextLine();
					for(int j = 0; j < n; j ++) {
						arr[i][j] = Integer.parseInt(nextLine.charAt(j) + "");
					}
				}
			}
			/*System.out.println("--------");
			for(int i = 0; i < m; i ++) {
				for(int j = 0; j < n; j ++) {
					System.out.print(arr[i][j] + " ");
				}
				System.out.println();
			}*/
			int sum = 0;
			for(int i = 0; i < m; i ++) {
				for(int j = 0; j < n; j ++) {
					if(arr[i][j] == 1) {
						sum ++;
						Tozero(arr, i, j, m, n);
					}
				}
			}
			System.out.println(sum);
		}
	}

	private static void Tozero(int[][] arr, int i, int j, int m, int n) {
		// TODO Auto-generated method stub
		if(arr[i][j] == 0) {
			return ;
		} else {
			arr[i][j] = 0;
			if(i - 1 >= 0) {
				Tozero(arr, i - 1, j, m, n);
			}
			if(i + 1 < m) {
				Tozero(arr, i + 1, j, m, n);
			}
			if(j - 1 >= 0) {
				Tozero(arr, i, j - 1, m, n);
			}
			if(j + 1 < n) {
				Tozero(arr, i, j + 1, m, n);
			}
			
			if(i - 1 >= 0 && j - 1 >= 0) {
				Tozero(arr, i - 1, j - 1, m, n);
			}
			if(i + 1 < m && j - 1 >= 0) {
				Tozero(arr, i + 1, j - 1, m, n);
			}
			if(i - 1 >= 0 && j + 1 < n) {
				Tozero(arr, i - 1, j + 1, m, n);
			}
			if(i + 1 < m && j + 1 < n) {
				Tozero(arr, i + 1, j + 1, m, n);
			}
		}
	}

}

Double click to view unformatted code.


Back to problem 62