八皇后问题

想了半天没解决的问题,感谢魏大神的点拨,解脱之后感觉特别爽~在考虑斜线时不能只考虑相邻行的~ 

#include <stdio.h>

int way = 0;

int flag[8] = {0};

int check(int column, int line)

{

int i;

if(line > 0)

{

for(i = 0; i < line; i++)

{

if(flag[i] == column)return 0;

if((flag[i] - column) == i - line || flag[i] - column == line - i)return 0;

}

}

return 1;

}

void eight_queen(int line)

{

int i;

if(line > 7)

{

way++;

return;

}

for(i = 0; i < 8; i++)

{

if(check(i, line))

{

flag[line] = i;

eight_queen(line + 1);

}

}

}

int main()

{

eight_queen(0);

printf("%d\n", way);

return 0;

}


你可能感兴趣的:(八皇后问题)