算法描述
代码
#define m 5
#define n 4
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 };
int color[m] = { 0 };
int count = 0;
int check(int num)
{
int i;
for (i = 0; i<num; i++)
{
if (a[num][i] == 1 && color[i] == color[num])
{
return 0;
}
}
return 1;
}
void dfs(int num)
{
int i,count=0;
if (num == m) {
count++;
for (i = 0; i<m; i++)
cout<<color[i];
cout << endl;
return;
}
for (i = 1; i <= n; i++)
{
color[num] = i;
if (check(num))
dfs(num + 1);
}
}
int main()
{
int count=0;
int i, j;
dfs(0);
cout<<count;
return 0;
}