原书问题,可以转换为图的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. java分割字符串
  2. HTTP学习四:SPDY和HTTP/2.0
  3. 微軟将从 .NET 4 以后的版本弃用 System.Data.OracleClient 以及Oracle 的各种连接方法
  4. APU平台DirectX 12性能测试:超级大惊喜!
  5. LightOJ1002 分类: 比赛 最短路 2015-08-08 15:57 15人阅读 评论(0) 收藏
  6. MVC 的HTTP请求
  7. mybatis系列-02-mybatis框架
  8. uc/os 笔记(转)
  9. php精度计算问题
  10. 学习笔记CB003:分块、标记、关系抽取、文法特征结构
  11. 19-03【golang】strings包
  12. telerik reporting报表
  13. Cheapest Palindrome [POJ3280] [区间DP] [经典]
  14. Delphi LiveBinds组件
  15. eclipse显示代码行数
  16. smali语法详解
  17. jquery 页面传值 汉字
  18. Java编程的逻辑 (29) - 剖析String
  19. Nexus 7更换NFC控制器,导致不再支持读取Mifare Classic NFC 1k Tags
  20. Mirror--如何TSQL查看镜像状态和镜像相关存储过程

热门文章

  1. iOS 非ARC基本内存管理系列 1-引用计数器
  2. 谷歌浏览器支持小于12px的字体
  3. offset() position() scrollTop() scrollLeft()
  4. IAR:Error [Li005]:no definition for&quot;***&quot; 问题之连接
  5. php简单计数器程序(文本计数器、图形计数器)
  6. linux下rm误删除数据库文件的恢复方法
  7. lnmp安装--linux通过tar.gz源码包安装mysql
  8. vim使用大全
  9. Nginx简单性能调优
  10. js 判断页面加载状态