黑白格问题(c++实现)

这篇博客介绍了如何使用C++解决数据结构课程中的黑白格问题。实验要求通过二维数组表示矩形网格,数组元素随机表示黑白格子,目标是找出最大的连续黑色格子家族的大小。博主提供了代码实现,并分享了实验结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是数据结构老师布置的实验A,题目描述如下:

  在一个矩形网格中,每一个格子的颜色或者为白色或者为黑色。任意或上、或下、或左、或右相邻同为黑色的格子组成一个家族。家族中所有格子的数量反映家族的大小。要求找出最大家族的家族大小(组成最大家族的格子的数量)。例如下图中最大家族的格子数量为 8。

  要求:  

  1、网格用二维数组表示。

  2、数组中的元素的值随机产生,分别用0和1表示白格子和黑格子。

  3、算法运行结果为最大家族的家族大小。

代码实现:

  

// 黑白格问题.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
#include "pch.h"
#include <iostream>
#include<cstdio>
#include<ctime>
#include<algorithm>
#include<vector>
using namespace std;

vector<vector<int>> board;//黑白格
vector<vector<int>> temp;//黑白格的备份
vector<vector<bool>> vis;//表示该元素是否被查询过
int directory[4][2] = { {0,1},{1,0},{0,-1},{-1,0} };//四个方向
//产生黑白格
void initialBoard(int HEIGHT)
{
	for (int i = 0; i < HEIGHT; i++)
	{
		vector<int> temp;
		for (int j = 0; j < HEIGHT; j++)
		{
			temp.push_back(rand() % 2);
		}
		board.push_back(temp);
	}
	for (int i = 0; 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值