八皇后问题
Posted zcxhaha
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了八皇后问题相关的知识,希望对你有一定的参考价值。
# include <stdio.h> # include <memory.h> # include <stdbool.h> int count = 0; bool is_safe(int row, int col, int chessp[][8]) { int i, j; /*判断列*/ for(j = 0; j < row; ++j) { if (chessp[j][col]) { return false; } } /*判断左上*/ for (i = row-1, j = col-1; i >= 0 && j >=0; --i, --j) { if(chessp[i][j]) { return false; } } /*判断右上*/ for(i = row-1, j = col+1; i >= 0 && j < 8; --i, ++j) { if(chessp[i][j]) { return false; } } return true; } void queen(int row, int col, int chessf[][8]) { int i, j; /*结束条件*/ if (row == 8) { count++; printf("第%d种: ", count); for(i = 0; i < 8; ++i) { for(j = 0; j < 8; ++j) { printf("%d ", chessf[i][j]); } printf(" "); } printf(" "); return; } else { for(i = 0; i < col; ++i) { if(is_safe(row, i, chessf)) { chessf[row][i] = 1; queen(row+1, col, chessf); //递归 chessf[row][i] = 0; //回溯 } } } } int main(void) { int chess[8][8]; memset(chess, 0, sizeof(chess)); //开始状态,棋盘置空 queen(0, 8, chess); return 0; }
以上是关于八皇后问题的主要内容,如果未能解决你的问题,请参考以下文章