递归方法解决八皇后问题
2012-05-08 11:29
134 查看
#include <stdio.h> static char Queen[8][8]; static int a[8]; //列冲突 static int b[15]; //主对角线冲突 static int c[15]; //次对角线冲突 static int iQueenNum = 0; //8皇后摆放方式计数 void qu(int i); //递归摆放8皇后方法 void init(); //初始化全局变量 int main() { init(); qu(0); } void init() { for (int i = 0; i < 8; i++) { a[i] = 0; for (int j = 0; j < 8; j++) { Queen[i][j] = '*'; } } for (int i=0; i<15; i++) b[i] = c[i] = 0; } void output() { for (int i=0; i<8; i++) { for (int j=0; j<8; j++) { printf("%c ", Queen[i][j]); } printf("\n"); } printf("-----%04d------\n", iQueenNum++); } void qu (int iLin) { int iCol = 0; for (iCol = 0; iCol < 8; iCol++) { if (a[iCol] == 0 && b[iCol-iLin+7] == 0 && c[iCol+iLin] == 0) { a[iCol] = b[iCol-iLin+7] = c[iCol+iLin] = 1; Queen[iLin][iCol] = '#'; if (iLin == 7) { output(); } else { qu (iLin+1); } a[iCol] = b[iCol-iLin+7] = c[iCol+iLin] = 0; Queen[iLin][iCol] = '*'; } } }
相关文章推荐
- python基于右递归解决八皇后问题的方法
- python基于右递归解决八皇后问题的方法
- 八皇后问题的递归解决方法
- 递归方法解决字符串反转
- 第十二周 项目三:用递归方法解决汉诺塔问题
- getDatabase called recursively数据库递归使用错误---解决方法
- 采用递归的方法解决汉诺塔问题
- Subsets II [leetcode] 从获取子集的递归和循环方法说起,解决重复子集的问题
- C语言数据结构之用递归解决八皇后问题
- 递归解决问题的方法
- c++ 数据结构 用递归方法解决迷宫问题
- 第4周项目5用递归的方法解决(4)
- python八皇后问题的解决方法
- 用Python递归解决阿拉伯数字转为中文财务数字格式的问题(2)--打开思路的一种方法
- 递归枚举,子集生成,排列生成,回溯都是解决解答树的方法,通过数值跟踪保存排序过程
- 如何解决斐波那契数列递归方法的性能问题
- 八皇后问题-递归与非递归方法实现
- 汉诺塔递归解决方法经典分析