#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; }
|