資源簡介
c 實現(xiàn)回溯算法解決圖的M著色問題,得到?jīng)_突點與其周圍節(jié)點
代碼片段和文件信息
//圖著色問題回溯法
/*
無向圖鄰接矩陣示例
0?1?1?0?0
0?1?1?0?1
1?1?0?0?1
0?1?0?0?1
0?1?1?1?0
*/
#include
int?color[100];
//int?c[100][100];
bool?ok(int?k?int?c[][100])//判斷頂點k的著色是否發(fā)生沖突
{
????int?ij;
????for(i=0;i ????{
????????if(c[k][i]==1&&color[i]==color[k])
????????????return?false;
????}
????return?true;
}
void?graphcolor(int?nint?mint?c[][100])
{
????int?ik;
????for(i=0;i ????????color[i]=0;//初始化
????k=0;
????while(k>=0)
????{
????????color[k]=color[k]+1;
????????while(color[k]<=m)
????????????if?(ok(kc))?break;
????????????else?color[k]=color[k]+1;//搜索下一個顏色
????????if(color[k]<=m&&k==n-1)//求解完畢,輸出解
????????{
????????????for(i=0;i ????????????????printf(“%d?“color[i]);
????????????printf(“\n“);
????????????return;//return表示之求解其中一種解
????????}
????????else?if(color[k]<=m&&k ????????????k=k+1;????//處理下一個頂點
????????else
????????{
//????????????co
- 上一篇:c++11語言基礎(chǔ)
- 下一篇:Effective Morden C++
評論
共有 條評論