Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.File;
- import java.util.Scanner;
- /**
- * Copyright © 2010 McKesson Corporation and/or one of its subsidiaries.
- * All rights reserved.
- */
- /**
- * @author BoHao Li
- */
- public class E
- {
- public static void main(String[] args) throws Exception
- {
- new E().doIt();
- }
- private int m;
- private int n;
- public void doIt() throws Exception
- {
- // Scanner sc = new Scanner(System.in);
- Scanner sc = new Scanner(new File("E.in"));
- m = sc.nextInt();
- n = sc.nextInt();
- boolean[][] maze = new boolean[m][n];
- int points = sc.nextInt();
- for (int i = 0; i < points; i++)
- {
- int x = sc.nextInt();
- int y = sc.nextInt();
- System.out.println(x + ": " + y);
- maze[x][y] = true;
- }
- print(maze);
- int generations = sc.nextInt();
- for (int i = 0; i < generations; i++)
- {
- boolean[][] copyMaze = maze;
- for (int j = 0; j < maze.length; j++)
- {
- for (int k = 0; k < maze.length; k++)
- {
- if (!maze[j][k] && check3Alive(j, k, maze))
- {
- copyMaze[j][k] = true;
- }
- if (maze[j][k] && fewer2Alive(j, k, maze))
- {
- copyMaze[j][k] = false;
- }
- }
- }
- print(maze);
- System.out.println();
- print(copyMaze);
- }
- }
- /**
- * @param j
- * @param k
- * @param maze
- * @return
- */
- private boolean fewer2Alive(int j, int k, boolean[][] maze)
- {
- if (j == 0 || j == (m - 1))
- {
- // TODO:
- return false;
- }
- System.out.println(k);
- int count = 0;
- if (maze[j - 1][k - 1])
- {
- count++;
- }
- if (maze[j - 1][k])
- {
- count++;
- }
- if (maze[j - 1][k + 1])
- {
- count++;
- }
- if (maze[j][k - 1])
- {
- count++;
- }
- if (maze[j][k + 1])
- {
- count++;
- }
- if (maze[j + 1][k - 1])
- {
- count++;
- }
- if (maze[j + 1][k])
- {
- count++;
- }
- if (maze[j + 1][k + 1])
- {
- count++;
- }
- if (count < 2 || count > 3)
- {
- return true;
- }
- return false;
- }
- /**
- * @param j
- * @param k
- * @param maze
- * @return
- */
- private boolean check3Alive(int j, int k, boolean[][] maze)
- {
- if (j == 0 || j == (m - 1))
- {
- // TODO:
- return false;
- }
- int count = 0;
- if (k == 0)
- {
- if (maze[j - 1][m - 1])
- {
- count++;
- }
- if (maze[j - 1][k])
- {
- count++;
- }
- if (maze[j - 1][k + 1])
- {
- count++;
- }
- if (maze[j][m - 1])
- {
- count++;
- }
- if (maze[j][k + 1])
- {
- count++;
- }
- if (maze[j + 1][m - 1])
- {
- count++;
- }
- if (maze[j + 1][k])
- {
- count++;
- }
- if (maze[j + 1][k + 1])
- {
- count++;
- }
- }
- else
- {
- if (maze[j - 1][k - 1])
- {
- count++;
- }
- if (maze[j - 1][k])
- {
- count++;
- }
- if (maze[j - 1][k + 1])
- {
- count++;
- }
- if (maze[j][k - 1])
- {
- count++;
- }
- if (maze[j][k + 1])
- {
- count++;
- }
- if (maze[j + 1][k - 1])
- {
- count++;
- }
- if (maze[j + 1][k])
- {
- count++;
- }
- if (maze[j + 1][k + 1])
- {
- count++;
- }
- }
- if (count == 3)
- {
- return true;
- }
- return false;
- }
- void print(boolean[][] arr)
- {
- for (boolean[] element : arr)
- {
- for (int j = 0; j < arr.length; j++)
- {
- if (element[j])
- {
- System.out.print("T ");
- }
- else
- {
- System.out.print("F ");
- }
- }
- System.out.println();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement