码迷,mamicode.com
首页 > 编程语言 > 详细

染色问题的算法(转)

时间:2016-12-05 09:43:47      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:csdn   链接   ++   nbsp   include   std   coloring   cout   pre   

#include<iostream> 
#define NUM 5 
using namespace  std; 
 
bool ok(int i,int b[],int a[NUM][NUM]) 
{ 
for(int j=0;j<i;j++) 
  if(a[i][j]==1&&b[i]==b[j]) 
      return false; 
return true; 
} 
void backtrackcoloring(int i,int vertexnum,int &sum,int a[NUM][NUM]) 
{ 
    int n=vertexnum; 
    int *b=new int[n]; 
    if(i>n) 
        sum++; 
    else 
    { 
        for(int j=0;j<4;j++) 
        {    b[i]=j; 
           if(ok(i,b,a)) 
               backtrackcoloring(i+1,vertexnum,&sum,a); 
        } 
    } 
} 
int main() 
{ 
    int sum=0; 
    int m,n; 
    int a[NUM][NUM]; 
    int linenum=8; 
    int vertexnum=5; 
    for(int i=0;i<NUM;i++) 
        for(int j=0;j<NUM;j++) 
        { 
            a[i][j]=0; 
            a[j][i]=0; 
        } 
    for(i=0;i<8;i++) 
    {     
        cin>>m>>n; 
        a[m][n]=1; 
        a[n][m]=1; 
    } 
    backtrackcoloring(0,vertexnum,&sum,a); 
    cout<<sum<<endl; 
    return 0; 
}

 

枚举遍历法...还以为是基于dfs遍历的

ps:手机编辑,排版不好...

原文:http://m.blog.csdn.net/article/details?id=26163067

 

下面的这个与上面的思路一样,代码是非递规的,虽然代码比较锉,可以看看作为参考。

链接:http://m.blog.csdn.net/article/details?id=17641017

 

染色问题的算法(转)

标签:csdn   链接   ++   nbsp   include   std   coloring   cout   pre   

原文地址:http://www.cnblogs.com/bofengyu/p/6132644.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!