编程之美:1.9高效率安排见面会 图的m着色问题 回溯法
原书问题,可以转换为图的m着色问题 ,下面该问题的代码
这里有参考ppt与code,免积分载
http://download.csdn.net/detail/u011467621/6341195
// 1.9.cpp : Defines the entry point for the console application.
// #include "stdafx.h"
#include "iostream"
#include "stdio.h" using namespace std; bool ColoringGraph(int G[][],int n,int m);
bool IsOk(int G[][],int color[],int k,int n) ;
int G[][]={{,,,,},{,,,,},{,,,,},{,,,,},{,,,,}};
int _tmain(int argc, _TCHAR* argv[])
{
int n=,m=;
ColoringGraph(G,n,m);
return ;
} bool ColoringGraph(int G[][],int n,int m)
//n是图的定点个数,G是图的连接矩阵,Gij=1说明i定点与j定点有连接。m是最多可以上的色
//若输出有效上色,返回1,否则返回0
{
int *color=new int[n]; for(int i=;i<n;i++)//给每个顶点颜色初始化为0
color[i]=; int k=; while(k>=)//k代表顶点个数,当k回溯到0说明已经没有可行解了
{
while(color[k]<=m)
{
color[k]++; if (IsOk(G,color,k,n))
break; }
if(color[k]<=m && k==n-)
{
cout<<"OK";
for(int j=;j<n;j++)
cout<<color[j];
return ;
}
else if(color[k]<=m && k<n-)
{
k++;
}
else//若k>m,说明此路不同回溯到上一层
{ color[k]=;
k--;
} } return ;
} bool IsOk(int G[][],int color[],int k,int n) //判断是否有相同色的顶点,与之是一个边的
{
for(int i=;i<n;i++)
{
if(G[i][k]== && color[i]==color[k])
return false;
}
return true;
}
参考文献:
http://wenku.baidu.com/view/d7242fd1c1c708a1284a444d.html
欢迎拍砖,交流。感谢您的阅读,若您想支持一下本文,麻烦顶一下,您的鼓励,是我的动力,谢谢!- -
欢迎转载本文,
转载时请附上本文地址:http://www.cnblogs.com/Dzhouqi/p/3346466.html
另外:欢迎访问我的博客 http://www.cnblogs.com/Dzhouqi/
编程之美:1.9高效率安排见面会 图的m着色问题 回溯法的更多相关文章
- 2017“编程之美”终章:AI之战勇者为王
编者按:8月15日,第六届微软“编程之美”挑战赛在选手的火热比拼中圆满落下帷幕.“编程之美”挑战赛是由微软主办,面向高校学生开展的大型编程比赛.自2012年起,微软每年都在革新比赛命题.紧跟时代潮流, ...
- 编程之美2014挑战赛 复赛 Codehunt平台试题答案
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
- LeetCode:Climbing Stairs(编程之美2.9-斐波那契数列)
题目链接 You are climbing a stair case. It takes n steps to reach to the top. Each time you can either c ...
- 编程之美2.5:寻找最大的K个数
编程之美2.5:寻找最大的K个数 引申:寻找第k大的数: 方法一: // 选择第k大的数(通过改进快速排序来实现) public static void SelectShort(int[] array ...
- 24点C++程序实现 编程之美1.16
解法1,对于任意输入的四个数字,给出一个24点的解法,若无解,则没有输出. 原理参照下图(编程之美原书) 代码如下,仅供参考 // 1.16.cpp : Defines the entry point ...
- Python编程之美:最佳实践指南PDF高清完整版免费下载|百度云盘|Python新手到进阶
百度云盘:Python编程之美:最佳实践指南PDF高清完整版免费下载 提取码:1py6 内容简介 <Python编程之美:最佳实践指南>是Python用户的一本百科式学习指南,由Pytho ...
- 生成CPU使用率 sin 曲线 控制cpu使用率 编程之美
入职Oracle 以后想着把之前写过的<编程之美>中控制CPU使用率曲线的程序再写一边, 可是总是由于入职须要学习的东西太多, 没有时间. 程序早就写好了. 最终有机会贴出来了.o(∩∩) ...
- 编程之美Q1
题目 和数书页有点类似,就直接数吧 #include<iostream> using namespace std; class q1 { public: size_t func(size_ ...
- 编程之美2015初赛第一场 hihoCoder #1156 : 彩色的树(染色问题)
#1156 : 彩色的树 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定一棵n个节点的树,节点编号为1, , …, n.树中有n - 1条边,任意两个节点间恰好有一条 ...
随机推荐
- win7中CIFS挂载和解挂
1.win7挂载CIFS共享至Z盘指令(用户名:test,密码:123456): net use Z: \\192.168.8.63\ygcd\duanxiuwei 123456 /USER:test ...
- DTcms 导航选中样式以及简化方法
(建议使用方法2,执行效率略高) 一般用于导航不能循环输出的情况. 可以循环输出导航的情况直接用if判断即可. 首页模版中顶部,自定义c#代码. <%set string channel=&qu ...
- 【转】给Winform的button等控件添加快捷键
ref: http://blog.sina.com.cn/s/blog_4cb9953f0100cy4z.html 第一种:Alt + *(按钮快捷键) 在大家给button.label.menuSt ...
- sublime 编辑完自动生成tmp的备份
是安装phptool之后造成的,卸载即可 http://bbs.csdn.net/topics/390826865
- amazon RequestReport
_GET_SELLER_FEEDBACK_DATA_ MarketplaceIdList 这此字段必填,否则无法取到报告
- AVL树的python实现
AVL树是带有平衡条件的二叉查找树,一般要求每个节点的左子树和右子树的高度最多差1(空树的高度定义为-1). 在高度为h的AVL树中,最少的节点数S(h)由S(h)=S(h-1)+S(h-2)+1得出 ...
- 题目1444:More is better
时间限制:3 秒 内存限制:100 兆 特殊判题:否 提交:1362 解决:640 题目描述: Mr Wang wants some boys to help him with a project. ...
- 【BZOJ 2744 】[HEOI2012]朋友圈
Description 在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着.一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他人的尊敬,所以现在就是需要你求朋友圈的最 ...
- Webx框架自带的petstore
Webx框架:http://openwebx.org/ petstore:webx3/webx-sample/petstore/tags/3.0/petstore 编译之后:mvn jetty:run ...
- Nhibernate 一对一关系映射(主键映射)
参考:点击这里 妈的,搞了一天了,终于可以了,现在总结下,以防下次再出现这样痛苦的问题了,有两个表:user(用户)和Blog(设置表),它们之间的关系正如我所说的是一对一的关系.现在我们来映射这两个 ...