C语言用回溯解决八皇后问题
来源:互联网 发布:野兽派有淘宝店吗 编辑:程序博客网 时间:2024/05/19 13:08
/**/ //回溯法实现8皇后问题。共有92种解法,其中包含对称解法。// GPH 2012-11-04 16:10// 修改时间: 2014/05/05/**/ #include<stdio.h>#include<stdlib.h>static int Queen[9][8];//皇后标记static int a[8]; //记录皇后列的信息static int b[15];//记录主对角线的皇后static int c[15];//记录次对角线的皇后static int Sum;void backtrace(int i){for(int iC = 0;iC < 8;iC++){ //用a[iC]来表示列,i记录行 //列ic,行i。主对角线b,次对角线c// 如(2,2),(3,3)都是b[0],(1,3)(3,1)都是c[4]if(a[iC] == 0 && b[i-iC+8] == 0 && c[i+iC] == 0){ //不冲突Queen[i][iC] = 'o'; //放置a[iC] = 1;b[i-iC+8] = 1;c[i+iC] = 1;if(i < 7)backtrace(i+1);else{printf("第%d种情况:\n",++Sum); for(int j = 0;j < 8;j++){for(int l = 0;l < 8;l++)printf("%c ",Queen[j][l]);printf("\n");}printf("\n");//getchar();} Queen[i][iC] = '*'; //重置a[iC] = 0;b[i-iC+8] = 0;c[i+iC] = 0;}//if}//for}//backtraceint main(){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; backtrace(0); printf("共%d种排法\n",Sum);//system("pause");}
0 0
- C语言用回溯解决八皇后问题
- 回溯法解决八皇后问题---用Java语言
- 八皇后问题-回溯法-c语言
- 用回溯法解决八皇后问题的C语言程序
- 八皇后问题用C语言解决
- C#WPF实现回溯算法解决八皇后问题
- C语言算法,八皇后问题,回溯算法
- C语言回溯法递归求解八皇后问题
- C# 用回溯递归解决“八皇后”问题
- 用回溯法解决八皇后问题(Java实现)
- 回溯法解决“八皇后”问题
- 回溯+栈解决八皇后的问题
- 回溯法解决八皇后问题
- 回溯法解决八皇后问题
- 回溯法解决八皇后问题
- 回溯法解决八皇后问题
- scala 回溯法解决八皇后问题
- 回溯法解决八皇后问题
- MFC界面等比例缩放功能
- 自考《数据库系统原理》(9)之数据库技术的发展
- 机房收费系统——无效使用null值
- 【实践】git初级教程
- POJ1860随感
- C语言用回溯解决八皇后问题
- linux生产者消费者(解释得非常好)
- 我知道怎么证明了!
- 关于软件项目和规范性的东西
- 灵活强大的构建系统Gradle
- 又见返回栈指针
- poj_2752 Seek the Name, Seek the Fame
- AT&T 和 Intel 汇编语法的主要区别
- 海量数据处理 百度面试题 从40亿IP地址中取出出现次数最多的那个IP地址,我的解法