"四染色"问题: 用不多于四种颜色对地图着色,使相邻的区域不重色。

算法思想: 从第一个区域开始染色,每一个区域依次用颜色1,2,3,4进行试探,如果当前所试探的颜色与周围区域都不同色,则用栈记录该区域色数,否则用下一色数继续试探;如果四种颜色都与相邻区域重色,那么需要退栈,修改栈顶色数,即更改上一区域的颜色继续试探。

#include<iostream>
#include<string>
#include<vector>
using namespace std;//地图四染色问题,首先定义了六个国家,用邻接矩阵表示了国家之间的关系等于1意味着相邻
vector<int> color;  //存储了从第一个国家开始的颜色
int s[6][6] =
{{ 0, 1, 1, 0, 0, 1 },{ 1, 0, 1, 1, 1, 1 },{ 1, 1, 0, 1, 1, 0 },{ 0, 1, 1, 0, 1, 0 },{ 0, 1, 1, 1, 0, 1 },{ 1, 1, 0, 0, 1, 0 }
};                      //存储了不同国家的邻接关系
void make_color()
{int c = 1;int city = 0;color.push_back(c);while (city < 5){c = 0;c++;city++;color.push_back(c);while (true){for (int i = 0; i < city; i++){if (s[city][i] * c == color[i])  //如果等于就说明相邻且颜色相同{c = color.back();color.pop_back();c++;color.push_back(c);i = 0;continue;}}break;}}
}int main(void)
{make_color();for (auto it : color){cout << "颜色编号: " << it << '\n';}return 0;
}

地图四染色问题——栈的回溯相关推荐

  1. c语言地图染色程序,求C语言地图四染色代码..

    ???代码改色没用?? #include #include #include #include #define INIT_STACK_SIZE 10 #define STACKINREMENT 5 t ...

  2. Python实现地图四色原理的遗传算法(GA)着色实现

    1 任务需求   首先,我们来明确一下本文所需实现的需求.   现有一个由多个小图斑组成的矢量图层,如下图所示:我们需要找到一种由4种颜色组成的配色方案,对该矢量图层各图斑进行着色,使得各相邻小图斑间 ...

  3. 地图四色着图的C语言实现

    四色问题又称四色猜想.四色定理,是世界三大数学猜想之一.四色定理是一个著名的数学定理,通俗的说法是:每个平面地图都可以只用四种颜色来染色,而且没有两个邻接的区域颜色相同.1976年借助电子计算机证明了 ...

  4. c语言电子地图程序,地图四色着图的C语言实现

    四色问题又称四色猜想.四色定理,是世界三大数学猜想之一.四色定理是一个著名的数学定理,通俗的说法是:每个平面地图都可以只用四种颜色来染色,而且没有两个邻接的区域颜色相同.1976年借助电子计算机证明了 ...

  5. 用栈、回溯算法设计迷宫程序

    目录 1.走迷宫与回溯算法 2.迷宫设计栈扮演的角色 3.Python实现走迷宫 栈的应用有许多,本篇博文着重将栈与回溯(Backtracking)算法结合,设计走迷宫程序.其实回溯算法也是人工智能的 ...

  6. 状态空间搜索或者空间搜索或者迷宫问题总结(递归法、回溯法)Python(递归一般用栈,回溯是循环)

    状态空间搜索问题或者称迷宫问题的基本特征是: 1.存在一集合可能状态(位置.情况等.这一集合可能很大).例:迷宫问题中的可能位置. 2.有一个初始状态S0,一个或者多个结束状态,或者有判断成功结束的方 ...

  7. C语言数据结构(大话数据结构——笔记2)第四章:栈与队列

    文章目录 第四章:栈与队列(115) 栈顶与栈底,空栈,后进先出 Last in first out(LIFO结构)(117) 进栈.压栈.入栈:栈的插入操作:出栈.弹栈:栈的删除操作(118) pu ...

  8. 7月算法训练------第十四天(栈)解题报告

    7月算法训练------第十四天(栈)解题报告 题目类型:栈 题目难度:简单 第一题.1614. 括号的最大嵌套深度 题目链接:1614. 括号的最大嵌套深度 思路分析: 遍历整个字符串,如果是'(' ...

  9. 高德地图四:关键字搜索

    高德地图四:关键字搜索 关键字检索介绍 根据关键字检索适用于在某个城市搜索某个名称相关的POI,例如:查找北京市的"肯德基". 注意:关键字未设置城市信息(默认为全国搜索)时,如果 ...

最新文章

  1. ROStopic 通信方式
  2. printf 格式控制符的完整格式
  3. server sql 众数_sql 语句系列(众数中位数与百分比)[八百章之第十五章]
  4. 《Spring Recipes》第二章笔记:Creating Beans by Invokin...
  5. CAN总线技术 | 数据链路层01 - CAN报文的组成
  6. Go1.17新特性 ,给我们带来了10%的性能提升
  7. python代码执行过程记录_这款神器,能把 Python 代码执行过程看地一清二楚
  8. python tkinter输入框_python tkinter-按钮.标签.文本框、输入框
  9. python中options类_Python的OptionParser模块
  10. Bailian2717 基本数据类型【字符串匹配】
  11. IP地址冲突导致网络故障如何排查问题?
  12. idea中Gsonformat插件工具使用
  13. [ATL/WTL]_[Gdiplus]_[关于混用GDI和GDI+(GDIPlus)导致显示不正常的解决方案]
  14. kd树 python实现_Python语言描述KNN算法与Kd树
  15. Django笔记:应用和分布式路由(应用创建,分布式路由的配置,应用下的模板)
  16. 北大计算机学霸,揭秘:2018北大在京录取的学霸们有何特长(组图)
  17. 吃透Chisel语言.31.Chisel进阶之通信状态机(三)——Ready-Valid接口:定义、时序和Chisel中的实现
  18. 弘辽科技:拼多多券后价影响报活动吗?怎么平衡?
  19. 计算机网络谢希仁版(第七版)答案
  20. 噬菌体疗法治疗细菌多重耐药添一篇好文

热门文章

  1. 氪见激光雷达性能参数介绍
  2. 3.26黄金原油后市看涨吗?3.27原油白银td操作建议走势分析
  3. 理解DCT与DST【二】:离散余弦变换
  4. 基于java+springboot+mybatis+vue+elementui的准妈妈孕期交流平台
  5. Linux服务器Anaconda安装Pytorch(注意,前方有大坑)
  6. 多消费者(多线程)对MNS的使用
  7. JZOJ 6305.最小值【思维】【dp】
  8. 对账与清分、清算、结算
  9. 银行卡的清分、对帐与清算(转)
  10. 【cocos shader 007】刷子 刮刮乐,刮奖