Exemple #1
0
int main() {
	int runs;
	scanf("%d", &runs);
	while (runs--) {
		int l, w;
		scanf("%d%d", &l, &w);
		if (l == 1 && w == 1) {
			m[0][0] = 'E';
			m[0][1] = 0;
		} else if (l == 1) {
			m[0][0] = 'B', m[0][1] = 'E', m[0][2] = 'B', m[0][w] = 0;
			for (int i = 3; i < w; ++i) m[0][i] = '.';
		} else if (w == 1) {
			m[0][0] = 'B', m[0][1] = 0;
			m[1][0] = 'E', m[1][1] = 0;
			m[2][0] = 'B', m[2][1] = 0;
			for (int i = 3; i < l; ++i) m[i][0] = '.', m[i][1] = 0;
		} else if (l == 2 && w != 3) {
			m[0][0] = 'E';
			m[1][0] = 'B';
			for (int i = 1; i < w; ++i) m[0][i] = '.', m[1][i] = 'B';
			m[0][w] = 0;
			m[1][w] = 0;
		} else if (w == 2 && l != 3) {
			m[0][0] = 'E', m[0][1] = 'B', m[0][2] = 0;
			for (int i = 1; i < l; ++i) m[i][0] = '.', m[i][1] = 'B', m[i][2] = 0;
		} else if (l == 3) {
			for (int i = 0; i < w; ++i) m[0][i] = m[2][i] = 'B';
			m[0][w] = m[2][w] = 0;
			m[1][0] = 'E', m[1][w] = 0;
			for (int i = 1; i < w; ++i) m[1][i] = '.';
		} else if (w == 3) {
			for (int i = 0; i < l; ++i) m[i][0] = m[i][2] = 'B', m[i][1] = '.', m[i][3] = 0;
			m[0][1] = 'E';
		} else {
			init(m, l, w);
			init(m2, w, l);
			go(m, l, w, 1, 0);
			go(m2, w, l, 0, 0);
			if (count_mat(m, l, w) < count_mat(m2, l, w)) {
				for (int i = 0; i < l; ++i) {
					for (int j = 0; j < w; ++j) {
						m[i][j] = m2[i][j];
					}
					m[i][w] = 0;
				}
			}
		}
		//printf("\nsize %d %d, %d\n", l, w, count_mat(m, l, w));
		for (int i = 0; i < l; ++i) puts(m[i]);
		//printf("m2, %d\n", count_mat(m2, l, w));
		//for (int i = 0; i < l; ++i) puts(m2[i]);
	}
	return 0;
}
Exemple #2
0
    void gameOfLife(vector<vector<int>>& board) {
		if (0 == board.size()) {
			return;
		}
		vector<vector<int> > count_mat(board.size(), vector<int> (board[0].size(), 0));
        for (size_t i = 0; i < board.size(); ++ i) {
			for (size_t j = 0; j < board[i].size(); ++ j) {
				if (1 == board[i][j]) {
					for (int k = -1; k <= 1; ++ k) {
						for (int m = -1; m <= 1; ++ m) {
							if (i + k >= 0 && i + k < board.size() && j + m >= 0 && j + m < board[i + k].size() && (k | m)) {
								++ count_mat[i + k][j + m];
							}
						}
					}
				}
			}
		}
        for (size_t i = 0; i < count_mat.size(); ++ i) {
			for (size_t j = 0; j < count_mat[i].size(); ++ j) {
				if (count_mat[i][j] < 2 || count_mat[i][j] > 3) {
					board[i][j] = 0;
				}
				if (3 == count_mat[i][j]) {
					board[i][j] = 1;
				}
			}
		}
    }