【数据结构基础C++】图论应用-用四种颜色对地图上的国家涂色

该博客探讨了如何使用图论解决四色问题,将国家视为顶点,用邻接矩阵存储相邻关系。通过色号循环为国家涂色,核心函数包括graphColor和isSafe。博客还提供了一个具体的省份例子,将其转换为顶点和边的关系,并说明了代码实现和测试过程。
摘要由CSDN通过智能技术生成

思想

  1. 存储:国家之间只有相邻和不相邻两种关系。把国家看作顶点,用边表示两个国家相邻。考虑到每个国家都要考虑相邻关系,用邻接矩阵存储。
  2. 四种色号编号为1,2,3,4;国家序号用 0…n 表示;
  3. 用色号循环方式,给国家涂色。
  4. 在涂色前,先判断与当前国家相邻的国家的涂色情况:若与之相邻的国家的色号与当前国家色号相同,则用下一个色号涂色;
  5. 核心函数:graphColor(int k);isSafe(int k,int color); 掌握这两个函数就可以了!
    在这里插入图片描述
    以这几个省份为例:
    在这里插入图片描述
    抽象成顶点与边的关系:
    在这里插入图片描述

代码

#pragma once
#include <iostream>
#include <cassert>
#include "DenseGraph.h"

using namespace std;

class colorMap {
   
private:
	int colorNum = 4;					//填色个数,默认四个颜色
	int* colored;
	DenseGraph& G;
	vector<vector<bool>> vec;

public:
	colorMap(DenseGraph& graph
  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值