地图四染色问题——栈的回溯
"四染色"问题: 用不多于四种颜色对地图着色,使相邻的区域不重色。
算法思想: 从第一个区域开始染色,每一个区域依次用颜色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;
}
地图四染色问题——栈的回溯相关推荐
- c语言地图染色程序,求C语言地图四染色代码..
???代码改色没用?? #include #include #include #include #define INIT_STACK_SIZE 10 #define STACKINREMENT 5 t ...
- Python实现地图四色原理的遗传算法(GA)着色实现
1 任务需求 首先,我们来明确一下本文所需实现的需求. 现有一个由多个小图斑组成的矢量图层,如下图所示:我们需要找到一种由4种颜色组成的配色方案,对该矢量图层各图斑进行着色,使得各相邻小图斑间 ...
- 地图四色着图的C语言实现
四色问题又称四色猜想.四色定理,是世界三大数学猜想之一.四色定理是一个著名的数学定理,通俗的说法是:每个平面地图都可以只用四种颜色来染色,而且没有两个邻接的区域颜色相同.1976年借助电子计算机证明了 ...
- c语言电子地图程序,地图四色着图的C语言实现
四色问题又称四色猜想.四色定理,是世界三大数学猜想之一.四色定理是一个著名的数学定理,通俗的说法是:每个平面地图都可以只用四种颜色来染色,而且没有两个邻接的区域颜色相同.1976年借助电子计算机证明了 ...
- 用栈、回溯算法设计迷宫程序
目录 1.走迷宫与回溯算法 2.迷宫设计栈扮演的角色 3.Python实现走迷宫 栈的应用有许多,本篇博文着重将栈与回溯(Backtracking)算法结合,设计走迷宫程序.其实回溯算法也是人工智能的 ...
- 状态空间搜索或者空间搜索或者迷宫问题总结(递归法、回溯法)Python(递归一般用栈,回溯是循环)
状态空间搜索问题或者称迷宫问题的基本特征是: 1.存在一集合可能状态(位置.情况等.这一集合可能很大).例:迷宫问题中的可能位置. 2.有一个初始状态S0,一个或者多个结束状态,或者有判断成功结束的方 ...
- C语言数据结构(大话数据结构——笔记2)第四章:栈与队列
文章目录 第四章:栈与队列(115) 栈顶与栈底,空栈,后进先出 Last in first out(LIFO结构)(117) 进栈.压栈.入栈:栈的插入操作:出栈.弹栈:栈的删除操作(118) pu ...
- 7月算法训练------第十四天(栈)解题报告
7月算法训练------第十四天(栈)解题报告 题目类型:栈 题目难度:简单 第一题.1614. 括号的最大嵌套深度 题目链接:1614. 括号的最大嵌套深度 思路分析: 遍历整个字符串,如果是'(' ...
- 高德地图四:关键字搜索
高德地图四:关键字搜索 关键字检索介绍 根据关键字检索适用于在某个城市搜索某个名称相关的POI,例如:查找北京市的"肯德基". 注意:关键字未设置城市信息(默认为全国搜索)时,如果 ...
最新文章
- ROStopic 通信方式
- printf 格式控制符的完整格式
- server sql 众数_sql 语句系列(众数中位数与百分比)[八百章之第十五章]
- 《Spring Recipes》第二章笔记:Creating Beans by Invokin...
- CAN总线技术 | 数据链路层01 - CAN报文的组成
- Go1.17新特性 ,给我们带来了10%的性能提升
- python代码执行过程记录_这款神器,能把 Python 代码执行过程看地一清二楚
- python tkinter输入框_python tkinter-按钮.标签.文本框、输入框
- python中options类_Python的OptionParser模块
- Bailian2717 基本数据类型【字符串匹配】
- IP地址冲突导致网络故障如何排查问题?
- idea中Gsonformat插件工具使用
- [ATL/WTL]_[Gdiplus]_[关于混用GDI和GDI+(GDIPlus)导致显示不正常的解决方案]
- kd树 python实现_Python语言描述KNN算法与Kd树
- Django笔记:应用和分布式路由(应用创建,分布式路由的配置,应用下的模板)
- 北大计算机学霸,揭秘:2018北大在京录取的学霸们有何特长(组图)
- 吃透Chisel语言.31.Chisel进阶之通信状态机(三)——Ready-Valid接口:定义、时序和Chisel中的实现
- 弘辽科技:拼多多券后价影响报活动吗?怎么平衡?
- 计算机网络谢希仁版(第七版)答案
- 噬菌体疗法治疗细菌多重耐药添一篇好文