【原理】回溯法

【核心代码】

void Draw(AGraph* g, int v)
{if (v == g->n){ColorPrint(g);count++;}else{int i;for (i = 1; i <= 4; ++i)//四个循环其实就是四叉树,类似于四皇后问题{//先序遍历状态树,因此先进行着色g->adjlist[v].color = i;if (IsLegitimate(g, v))Draw(g, v + 1);//如果合法,则对下一个顶点着色g->adjlist[v].color = 0;//恢复原值}}
}

【验证代码】

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define maxSize 100typedef struct ArcNode
{int adjvex;struct ArcNode* nextarc;
}ArcNode;typedef struct
{int color;//1-4表示四种颜色ArcNode* firstarc;
}VNode;typedef struct
{VNode adjlist[maxSize];int n, e;
}AGraph;int count = 0;//计数变量,计算输出的方案数void ColorPrint(AGraph* g)
{int i;for (i = 0; i < g->n; ++i){printf("顶点%d的颜色为%d\n", g->adjlist[i].color);}
}int IsLegitimate(AGraph* g, int v)//判定该顶点的着色是否合法,合法返回1,否则返回0
{ArcNode* p;p = g->adjlist[v].firstarc;//遍历所有的相邻顶点,比对顶点的颜色是否与v相同while (p != NULL){if (g->adjlist[p->adjvex].color == g->adjlist[v].color)//如果相邻区域颜色相同则非法return 0;p = p->nextarc;}return 1;
}void Draw(AGraph* g, int v)
{if (v == g->n){ColorPrint(g);count++;}else{int i;for (i = 1; i <= 4; ++i){//先序遍历状态树,因此先进行着色g->adjlist[v].color = i;if (IsLegitimate(g, v))Draw(g, v + 1);//如果合法,则对下一个顶点着色g->adjlist[v].color = 0;//恢复原值}}
}int main()
{return 0;
}

【2015.8】验证四色定理的有效性相关推荐

  1. 文本分类 - 样本不平衡的解决思路与交叉验证CV的有效性

    现实情况中,很多机器学习训练集会遇到样本不均衡的情况,应对的方案也有很多种. 笔者把看到的一些内容进行简单罗列,此处还想分享的是交叉验证对不平衡数据训练极为重要. 文章目录 1 样本不平衡的解决思路 ...

  2. 的有效性最好_股票职业玩家教韭菜实战,验证技术指标的有效性,资产增值是王道...

    技术分析股票有两种思路. 一种是追踪大资金的入场踪迹.我前面有两篇文章专门是分析大资金入场踪迹的.分别是:1.<股票职业玩家详解K线图组合应用,一眼识破主力资金入场>:2.<股票职业 ...

  3. C语言验证四色定理并输出所有染色方案

    题目 思路 首先对一个多边形进行着色,着色后判断是否满足要求,如果满足要求则继续对其他多边形进行着色 如果不满足要求则撤销当前着色并回溯,采用其他着色方案 递归如此,直到地图全部着色完成 验证四色定理 ...

  4. python爬取国内代理ip_【python】国内高匿代理爬取,并验证代理ip有效性

    运行环境:python 3.7.3 所需库: 1. requests 2. lxml 3. time 4. multiprocessing 5. sys 目的:构建自己的代理ip池,针对封ip型反爬虫 ...

  5. Linux shell验证邮箱的有效性

    最近又好多天没总结了,这两天偶然间网上听了一节课用shell脚本做爬虫.于是就从最基本的邮箱搞起来,今天总结了一些正则表达式的基础写了一个一个验证邮箱有效性的shell脚本.一下是总结内容: 电子邮箱 ...

  6. 使用RMAN验证备份的有效性

    --验证控制文件和参数文件: RMAN> restore validate controlfile;Starting restore at 22-JUL-14 allocated channel ...

  7. sql server 验证身份证号码有效性

    有些情况下 ,数据库里的身份证号码有很多无效数据,这时候要刷选所有有效的身份证号码数据该如何做呢? 可以建一个函数,然后直接调用即可,sql如下: CREATE FUNCTION [dbo].[fun ...

  8. Excel的检验数据的标准(数据验证-数据的有效性)

    工作中往往会涉及到很多数据的处理,有些时候需要验证数据是否符合某个标准,比如学生的成绩,Excel中很好的给我们提供了检验数据的标准. Excel的数据验证可以是 数据类型:整数,小数 日期 文本长度 ...

  9. python验证IP的有效性及其是否属于内外网

    1. 检查ip的有效性: 示例代码: import ipaddress# 检查ip的有效性 def check_valid_ip(ip):try:ipaddress.ip_address(ip.str ...

最新文章

  1. 【Java】方法的重载 (求最大值方法的重载+求和的重载)
  2. OO第一单元作业总结
  3. linux shell中的各种括号的使用方法
  4. JAVA1100集,唤醒错误11002
  5. android自定义optionmenu,android - 自定义onOptionMenu外观 - 堆栈内存溢出
  6. BZOJ 2668: [cqoi2012]交换棋子
  7. 机器学习中的常用概率分布
  8. Algorithm(1) - Karatsuba multiplication
  9. c++ 结构体中不同类型的初始值_Golang语言基础教程:结构体
  10. 房产估值软件测试怎么报风险,基于风险的测试策略
  11. 【Android】AsyncTask机制
  12. 【数据结构】KMP算法分析与理解(图文分析)
  13. JavaWeb-Web请求过程
  14. Web3的企业如何用Token激励员工?
  15. 谷歌浏览器android插件开发工具,ARC Welder:在谷歌浏览器运行安卓APK
  16. 多媒体计算机系统主要分为三类,03多媒体计算机系统组成.ppt
  17. 可重入函数与线程安全的区别与联系
  18. 微信小程序API的Promise化及全局状态管理MobX
  19. 湍流参数计算c语言,力扣978.最长湍流子数组-C语言
  20. 魔兽世界虚拟机 不能登录(魔兽世界无法登陆解决方法)

热门文章

  1. linux搭建LVS+keepalive+nginx实现集群高性能负载均衡配置详解
  2. FBX导入UE4模型报错:无法创建,多边形退化
  3. 谷歌地图高清卫星地图在OpenLayers中的应用示例源码
  4. Python数据分析实战之用户消费行为数据分析
  5. android 7.0下载地址,安卓7.0系统手机下载安装教程 Android7.0下载地址
  6. Android图片叠加效果
  7. 大学生生涯职业规划计算机专业,大学生职业生涯规划书-计算机专业 (7).pdf
  8. 天津科技大学计算机西电,我国值得报考的3所轻工类大学,王牌专业学生被哄抢,家长请收藏...
  9. poj 2987 Firing (最大权闭合子图)
  10. Java风车动画代码_纯DOM+CSS3实现简单的小风车动画