八皇后

Run Settings
LanguageC
Language Version
Run Command
#include <stdio.h> int queen_position[8]= {0}; int solve_count = 0; /****************************************************************************** * 函数名称: display_solve * 功能描述: 显示八皇后的一种解法 * 输入参数: 无 * 输出参数: 无 * 修改历史: 2017-3-06, 10:17, 修改者: Jiemnij ******************************************************************************/ void display_solve(void) { int i, column; printf("------------------------------\n"); for (i = 0; i < 8; i++) { for (column = 0; column < queen_position[i]; column++) { printf("-"); } printf("X"); for (column++; column < 8; column++) { printf("-"); } printf("\n"); } } /****************************************************************************** * 函数名称: check_pos_valid * 功能描述: 判断位置是否符合八皇后要求 * 输入参数: <queen_index> 当前判断是第几个皇后 * : <column> 第几个皇后位于的列数 * 输出参数: =1 符合要求, =0 不符合要求 * 修改历史: 修改者: ******************************************************************************/ int check_pos_valid(int queen_index, int column) { int i, col; for (i = 0; i < queen_index; i++) { col = queen_position[i]; //皇后的位置 if ((col == column) || //列数相同自然不行 ((col + (queen_index - i)) == column) || //斜着/相同也不行 ((col - (queen_index - i)) == column)) { //斜着\相同也不行 return 0; } } return 1; } /****************************************************************************** * 函数名称: eight_queen * 功能描述: 八皇后解法 * 输入参数: <index> = 第几个皇后 * 输出参数: 无 * 修改历史: 修改者: ******************************************************************************/ void eight_queen(int index) { int column; for (column = 0; column < 8; column++) { if (check_pos_valid(index, column)) { //找到了符合条件的皇后就设置位置 queen_position[index] = column; if (7 == index) { //如果已经找到了八皇后 solve_count++; //次数增加 display_solve(); //打印具体位置 return; //退出 } eight_queen(index + 1); } } } int main(int argc, char*argv[]) { eight_queen(0); printf("\nTotal = %d", solve_count); return 0; }
Editor Settings
Theme
Key bindings
Full width
Lines