#include<iostream.h>
#include<iomanip.h>
class color{
friend int mcoloring(int,int);
private:
int ok(int k);
void backtrack(int t);
int n, //图的顶点数
m, //可用颜色数
a[5][5], //图的邻接矩阵
*x; //当前解
int long sum ; //当前已找到的可m着色方案
};
int color::ok(int k)
{//检查颜色可用性
for(int j=1;j<=n;j++)
if ((a[k][j]==1)&&(x[j]==x[k])) return 0;
return 1;
}
void color::backtrack(int t)
{
if(t>n){
sum++;
cout<<setw(4)<<sum<<':';
for(int i=1;i<=n;i++)
cout<<x[i]<<' ';
cout<<endl;
}
else
for(int i=1;i<=m;i++){
x[t]=i;
if(ok(t)) backtrack(t+1);
}
}
int mcoloring(int n,int m)
{ color X; //初始化
int a[5][5]={{0,1,1,1,0},{1,0,1,1,1},{1,1,0,1,0},{1,1,1,0,1},{0,1,0,1,0}};
for (int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
X.a[i][j]=a[i][j];
cout<<a[i][j]<<' ';
}
cout<<endl;
}
X.n=n;
X.m=m;
X.sum=0;
int *p=new int[n+1];
for(i=1;i<=n;i++)
p[i]=0;
X.x=p;
X.backtrack(1);
delete []p;
return X.sum;
}
void main()
{ int n=5,m=5;
mcoloring(n,m);
}
着色问题的回溯解法(C语言)
2星 需积分: 35 190 浏览量
2011-04-18
11:13:32
上传
评论
收藏 219KB RAR 举报
chunlanzhao2011
- 粉丝: 0
- 资源: 8
最新资源
- MQTT协议发温湿度到阿里云平台支持下发控制LED灯与继电器对接阿里云APP
- STM32F103ZET6+OV2640+TF卡存储
- 操作系统考试要点最新版本.doc
- 操作系统试题B卷.doc
- 移动机器人自主路径规划之RRT算法MATLAB实现代码
- Python使用 LSTM循环神经网络预测风力发电厂中风机产生的功率项目源码+数据集.zip
- 深入探究文件I/O-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板
- MQTT协议发温湿度电压数据到ONENET支持下发控制LED灯与继电器(新平台)
- 平抑风电波动的电-氢混合储能容量优化配置(注释完全,可直接运行)(文档加Matlab源码)
- Gigabyte.RX560.4g 1750mhz bios GAMING OC
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈