八皇后问题-C实现
来源:互联网 发布:水晶报表软件下载 编辑:程序博客网 时间:2024/05/21 19:31
最近程序的这些算法可是吃了点小亏。这是一个困饶了我很久的一个问题,以前不止一次有小伙伴同学讨论这算法个话题,每次我都觉得太难所以都只是听听不发表意见,知道最近有考试了才发现,我一直逃避的这些问题身为计算机专业的我根本不可能逃避的。所以既然逃不过那今天静下心来好好学习学习,就先从这个八皇后问题开始吧。
说实话这程序不是我自己的原创,不过借鉴别人的成果总能快速学习的对吧,比自己慢慢研究要高效很多。里面一个函数对于高手来说肯定不存在什么问题,就不要嘲笑我了。但是我自己本来就是菜鸟,所以我还是照顾 一下和我一样菜鸟的小伙伴,所以我还是介绍一下。里面有一个abs()函数这个是输出绝对值函数例如abs(-8)=8;abs(8)=8。在其他的也没啥了。
#include<stdio.h>#include<math.h>#define N 4int cin = 1;bool a[N + 1][N + 1] = { 1 };bool scan(bool a[N+1][N+1]);//输出地图函数bool Trial(int i);//循环行和列函数bool Decide(bool a[N+1][N+1],int i,int j );//判断是否满足要求int main(){ Trial(1);//从第一行开始判断 return 0; }bool scan(bool a[N + 1][N + 1]){//输出地图函数 printf("sum=%d\n",cin++); for (int i = 1; i < N + 1; i++) { for (int j = 1; j < N + 1; j++) { a[i][j] == 1? printf("%2d", 0) : printf(" *"); } printf("\n"); } return true;}bool Trial(int i){//循环行和列函数 if (i > N) scan(a); else for (int j = 1; j < N + 1; j++) { a[i][j] = 1; if (Decide(a, i, j)) Trial(i + 1); a[i][j] = 0; } return true;}bool Decide(bool a[N + 1][N + 1], int i, int j){//判断是否满足要求 for (int m = 1; m <i; m++)//行 { for (int n = 1; n < N + 1; n++)//列 { if (a[m][n]==1) if (n == j || abs(i - m) == abs(j - n)) return false; } } return true;}
阅读全文
0 0
- 八皇后问题-C实现
- 八皇后问题递归实现(C++)
- 八皇后问题的C语言实现
- C语言实现“八皇后问题”
- 八皇后问题(C++)
- c++:八皇后问题
- 八皇后问题(C++)
- 八皇后问题实现
- c解决八皇后问题
- C语言 八皇后问题
- 八皇后问题,c,c++
- C语言-八皇后问题
- c语言八皇后问题
- 八皇后 c语言实现
- 回溯法-八皇后问题之C实现
- C#WPF实现回溯算法解决八皇后问题
- 八皇后问题(用c语言实现)
- 八皇后问题的实现
- 九九乘法表代码
- #大二上数据结构#知识点集中
- Wannafly模拟赛3 绝对半径2051(离散化+尺取法)
- Github
- The parent project must have a packaging type of POM?问题的解决办法
- 八皇后问题-C实现
- 合并排序java实现
- python之切片操作
- Imageloader修改完的代码
- 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以买多少汽水
- IP,端口,tcp和udp简介
- bean 类
- 近期DP总结
- JSP交互---request对象