标签:
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 15557 | Accepted: 8431 |
Description
Input
Output
Sample Input
1 1 * 3 5 *@*@* **@** *@*@* 1 8 @@****@* 5 5 ****@ *@@*@ *@**@ @@@*@ @@**@ 0 0
Sample Output
0 1 2 2
Java AC 代码
import java.util.Scanner; public class Main { static String field[][]; static int rows; static int columns; static int pockets; static boolean marked[][]; static int dx[] = {-1, 0, 1, -1, 1, -1, 0, 1}; static int dy[] = {1, 1, 1, 0, 0, -1, -1, -1}; public static void main(String[] args) { Scanner sc = new Scanner(System.in); while((rows =sc.nextInt()) != 0 && (columns = sc.nextInt()) != 0) { pockets = 0; field = new String[rows][columns]; marked = new boolean[rows][columns]; for(int i = 0; i < rows; i++) { String line = sc.next(); for(int j = 0; j < columns; j++) { field[i][j] = line.substring(j, j + 1); } } for(int i = 0; i < rows; i++) for(int j = 0; j < columns; j++) { if(!marked[i][j] && field[i][j].equals("@")) { dfs(i, j); pockets++; } } System.out.println(pockets); } } public static void dfs(int row, int col) { for(int i = 0; i < 8; i++) { int _row = row + dy[i]; int _col = col + dx[i]; if(_row < rows && _row >= 0 && _col < columns && _col >= 0 && !marked[_row][_col] && field[_row][_col].equals("@")) { marked[_row][_col] = true; dfs(_row, _col); } } } }
标签:
原文地址:http://www.cnblogs.com/kkkkkk/p/5539909.html