编程之美: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条边,任意两个节点间恰好有一条 ...
随机推荐
- 纯JS焦点图特效(可一个页面多用)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- .NET Web后台动态加载Css、JS 文件,换肤方案
后台动态加载文件代码: //假设css文件:TestCss.css #region 动态加载css文件 public void AddCss() { HtmlGenericControl _CssFi ...
- SQL行列转换:报表_公司采购表_每个公司各采购了些什么产品
有同学问了个比较典型行列转换的问题,想想,解答如下:数据库有一张表: 是个公司采购表,想转化成如下报表,显示每个公司各采购了些什么产品: 哪些公司采购哪些产品是不确定的,所以报表的列有哪几项是不确定的 ...
- gridview 字段没有绑定由于column visible= false
由于gridview column visible=false, 后面执行gridview databound()操作 不会将数据绑定到相关的单元格,其实这个时候我们希望绑定数据只是不显示而已. 可以 ...
- js分割文件快速上传
<?php header('Content-type:text/html;charset=UTF-8'); ?> <?php if ($_FILES) { if(!file_exis ...
- WPF 中 TreeListView 的使用
前段时间在项目开发中需要用 TreeListView 的功能,于是在网上狂搜一通,倒也找到了几个小例子,但还是满足不了我简单的要求,由于时间紧也只能折中凑合着用了.最近时间比较充裕,把其中的例子整理一 ...
- web.xml中JSP配置及 EL表达式
web.xml 中JSP配置.servlet配置 及 EL表达式 [摘要] servlet 基本配置 <servlet> <servlet-name>LoginServlet& ...
- mac 下 sphinx + mysql + php 实现全文搜索(xampp)(1)
原理: 使用sphinx 中的indexer 生成索引数据 service/web 端 利用searched 调用索引数据 步骤: 下载 sphinx: 下载地址:http://sphinxsea ...
- Oracle查看用户所在表空间
查看当前用户所在表空间 select username,default_tablespace from user_users; 修改用户默认表空间 alter user 用户名 default tab ...
- MVC视图引擎
1.视图引擎:把视图解析成浏览器可执行的html代码 2.aspx视图: <%=表达式%>: <% C#代码段 %>: 3.razor视图: @(表达式):@ViewData[ ...