// プログラム5-3 の#include <iostreamの> する#include < 文字列・H> に#define MX 50 使って 名前空間STD; INT X [MX]; // 溶液成分は int型、マップ[MX] [MX] // 図のアバットメント。マトリックス のint SUM = 0 ; // ソリューションの数を記録する int型 N-、M、エッジ; // ノードの数や色数 // 隣接行列作成 ボイドCreatMapを() { int型U、V、 COUT << 「辺の数を入力してください:" ; cinを >>エッジ。 memsetの(地図、0、はsizeof(マップ)); // 隣接行列データは0に初期化され、mesetは導入する必要があるの#include <string.hの> COUT << 」を順次エッジに接続された2つのノードを入力して、uは持っていてくださいV、スペースで区切られた:" ; のための(INT I = 1 ; Iは<=エッジ; I ++ ) { CIN >> U V、 マップ[U] [V] =マップ[V] [U] = 1 ; } } // 制約 BOOL(OK INT T) { ため(INT J = 1。 ; J <T、J ++ ) { IF(マップ[T] [J]) // もし、T jの当接部と { IF(X [J] == X [T])// 分析およびT J着色の同じ数である リターン falseに; } } 戻り trueに; } // 検索機能は 無効(バックトラックをint型T) { IF(T> N-)// 着色スキームを見つけるために、葉に到達 { SUM ++ ; COUT << " 最初" << << SUM " :種のプログラムを" ; のために(int型私は= 。1;私は<= N-;私は++は)// 着色スキーム出力 COUT << X [I] << " " ; COUT << ENDLを; } 他{ ため(INT I = 1 ; I <= M、Iが++)// M色の各ノード試行 { X [T] = I; IF (OK(T)) バックトラック(T用 + 1 ); } } } int型のmain() { COUT << " 入力ノード:" ; CIN > >N-、 COUTは << " 色数を入力:" ; CIN >> mは、 COUT << " 入力無向グラフの隣接マトリックス:" << ENDL; ; CreatMap() (バックトラック1 ); }
// プログラム5-3 の#include <iostreamの> する#include < 文字列・H> に#define MX 50 使って 名前空間STD; INT X [MX]; // 溶液成分は int型、マップ[MX] [MX] // 図のアバットメント。マトリックス のint SUM = 0 ; // ソリューションの数を記録する int型 N-、M、エッジ; // ノードの数や色数 // 隣接行列作成 ボイドCreatMapを() { int型U、V、 COUT << 「辺の数を入力してください:" ; cinを >> エッジ。 memsetの(地図、0、はsizeof(マップ)); // 隣接行列データは0に初期化され、mesetは導入する必要があるの#include <string.hの> COUT << 」を順次エッジに接続された2つのノードを入力して、uは持っていてくださいV、スペースで区切られた:" ; のための(INT I = 1 ; Iは<=エッジ; I ++ ) { CIN >> U V、 マップ[U] [V] =マップ[V] [U] = 1 ; } } // 制約 BOOL(OK INT T) { ため(INT J = 1。 ; J <T、J ++ ) { IF(マップ[T] [J]) // もし、T jの当接部と { IF(X [J] == X [T])// 分析およびT J着色の同じ数である リターン falseに; } } 戻り trueに; } // 検索機能は 無効(バックトラックをint型T) { IF(T> N-)// 着色スキームを見つけるために、葉に到達 { SUM ++ ; COUT << " 最初" << << SUM " :種のプログラムを" ; のために(int型私は= 。1;私は<= N-;私は++は)// 着色スキーム出力 COUT << X [I] << " " ; COUT << ENDLを; } 他{ ため(INT I = 1 ; I <= M、Iが++)// M色の各ノード試行 { X [T] = I; IF (OK(T)) バックトラック(T用 + 1 ); } } } int型のmain() { COUT << " 入力ノード:" ; CIN > >N-、 COUTは << " 色数を入力:" ; CIN >> mは、 COUT << " 入力無向グラフの隣接マトリックス:" << ENDL; ; CreatMap() (バックトラック1 ); }