用c++实现蓝桥杯试题岛屿问题
时间: 2024-01-24 13:03:14 浏览: 34
生命游戏是一个经典的二维细胞自动机模型,因为它展现了自组织、演化、易扩展等特点,并可以用于生物、计算机科学、数学等多个领域。
以下是使用C语言实现生命游戏的代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROWS 20
#define COLS 50
void init_board(int board[ROWS][COLS])
{
int i, j;
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
board[i][j] = rand() % 2;
}
}
}
void show_board(int board[ROWS][COLS])
{
int i, j;
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
if (board[i][j] == 1) {
printf("#");
} else {
printf(".");
}
}
printf("\n");
}
}
int count_neighbors(int board[ROWS][COLS], int row, int col)
{
int count = 0, i, j;
for (i = -1; i <= 1; i++) {
for (j = -1; j <= 1; j++) {
if (i == 0 && j == 0) continue;
if (row+i < 0 || row+i >= ROWS) continue;
if (col+j < 0 || col+j >= COLS) continue;
count += board[row+i][col+j];
}
}
return count;
}
void update_board(int board[ROWS][COLS])
{
int new_board[ROWS][COLS];
int i, j, count;
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
count = count_neighbors(board, i, j);
if (board[i][j] == 1) {
if (count < 2 || count > 3) {
new_board[i][j] = 0;
} else {
new_board[i][j] = 1;
}
} else {
if (count == 3) {
new_board[i][j] = 1;
} else {
new_board[i][j] = 0;
}
}
}
}
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
board[i][j] = new_board[i][j];
}
}
}
int main()
{
int board[ROWS][COLS];
srand(time(NULL));
init_board(board);
while (1) {
show_board(board);
update_board(board);
printf("\033[2J\033[H");
}
return 0;
}
该代码使用随机数初始化了一个20行50列的细胞模型图,并重复显示,模拟生命游戏的进化过程。
注意:本AI只提供技术分享,不参与任何违法活动,请用户合法使用技术。