编程之美:1.9高效率安排见面会 图的m着色问题 回溯法
2024-10-19 08:45:25
原书问题,可以转换为图的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/
最新文章
- java分割字符串
- HTTP学习四:SPDY和HTTP/2.0
- 微軟将从 .NET 4 以后的版本弃用 System.Data.OracleClient 以及Oracle 的各种连接方法
- APU平台DirectX 12性能测试:超级大惊喜!
- LightOJ1002 分类: 比赛 最短路 2015-08-08 15:57 15人阅读 评论(0) 收藏
- MVC 的HTTP请求
- mybatis系列-02-mybatis框架
- uc/os 笔记(转)
- php精度计算问题
- 学习笔记CB003:分块、标记、关系抽取、文法特征结构
- 19-03【golang】strings包
- telerik reporting报表
- Cheapest Palindrome [POJ3280] [区间DP] [经典]
- Delphi LiveBinds组件
- eclipse显示代码行数
- smali语法详解
- jquery 页面传值 汉字
- Java编程的逻辑 (29) - 剖析String
- Nexus 7更换NFC控制器,导致不再支持读取Mifare Classic NFC 1k Tags
- Mirror--如何TSQL查看镜像状态和镜像相关存储过程
热门文章
- iOS 非ARC基本内存管理系列 1-引用计数器
- 谷歌浏览器支持小于12px的字体
- offset() position() scrollTop() scrollLeft()
- IAR:Error [Li005]:no definition for";***"; 问题之连接
- php简单计数器程序(文本计数器、图形计数器)
- linux下rm误删除数据库文件的恢复方法
- lnmp安装--linux通过tar.gz源码包安装mysql
- vim使用大全
- Nginx简单性能调优
- js 判断页面加载状态