图的m着色问题
Posted zili
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图的m着色问题相关的知识,希望对你有一定的参考价值。
#include<stdio.h> int color[100],sum; bool ok(int k,int c[100][100]) { for(int i=1;i<k;i++) if((c[k][i]==1)&&(color[i]==color[k])) return false; return true; } void backtrack(int k,int n,int m,int c[100][100]){ if(k>n){ for(int i=1;i<=n;i++) printf("%d ",color[i]); printf(" "); sum++; } else{ for(int i=1;i<=m;i++){ color[k]=i; if(ok(k,c)) backtrack(k+1,n,m,c); color[k]=0; } } } int main(){ int i,j,n,m; int c[100][100]; printf("输入顶点数n和着色数m: "); scanf("%d %d",&n,&m); printf("输入无向图的邻接矩阵: "); for(i=1;i<=n;i++) for(j=1;j<=n;j++) scanf("%d",&c[i][j]); printf("着色所有可能的解: "); backtrack(1,n,m,c); printf("着色可能解的总数为:%d ",sum); return 0; }
以上是关于图的m着色问题的主要内容,如果未能解决你的问题,请参考以下文章